Django проблема разрешения специальных символов в url

у нас есть веб-сайт, сделанный Django. И нет никаких проблем, когда доступ следующий url в локальной рабочей среде:

http://site/tags/c%23/

" c%23 "- это urlencode" c#", который отлично работает локально. Но после того, как мы развернем его на хост-сервере Bluehost (apache+fastcgi), этот URL-адрес был разрешен на новый адрес:

http://site/t/tags/c/ 

это слишком странно. Вероятно, это не проблема Django, но имеет какое-то отношение к Переписать url-адрес Apache. Если у вас есть какие-либо идеи или предложение как исправить это, пожалуйста, дайте мне знать. Спасибо заранее.

здесь .файл htaccess может считаться:

AddHandler fcgid-script .fcgi 
#AddHandler fastcgi-script .fcgi 
#AddHandler application/cgi .fcgi 
#AddHandler cgi-script .fcgi 
RewriteEngine On 
RewriteBase / 
#static file setting 
RewriteRule ^(media/.*)$ - [L] 
RewriteRule ^(static/.*)$ - [L] 
RewriteCond %{REQUEST_URI} !(dispatch.fcgi) 
RewriteRule ^(.*)$ dispatch.fcgi/ [L] 

и направить.файл fcgi:

#!/home/***/python/bin/python 
import sys, os 
# Add a custom Python path. 
sys.path.insert(0, "/home/***/python") 
sys.path.insert(0, "/home/***/working/Django-1.0") 
os.chdir("/home/***/working/Django-1.0/project") 
os.environ['DJANGO_SETTINGS_MODULE'] = "project.settings" 
from django.core.servers.fastcgi import runfastcgi 
runfastcgi(["method=threaded", "daemonize=false"]) 

UPDAET: если это вызвано настройками в httpd.conf, как я могу переопределить .htaccess файл, пока у меня нет разрешения на него?

4 ответов


просто несколько советов, прежде чем идти дальше:

вы пробовали использовать другие символы, такие как пробел (%20) или подчеркнутый символ ASCII? Кроме того, вы пытались поместить другие символы после %23 (кроме косой черты), чтобы увидеть, если они также удалены?

можно предположить, что, поскольку # рассматривается как якорь на текущей странице, # и все, что после этого, будет удалено в перезаписи.


Я должен согласиться с первым ответом - и без доступа к конфигурации apache вам может не повезти. Использование "CSharp" или что-то в этом роде может быть способом пойти.


# имеет особое значение в URI, такое же, как / или ? делает. У вас есть эта проблема с другими символами? В конечном счете, вы не должны использовать # sign в URI в любом случае, если вы не ссылаетесь на якорь на странице.


http://httpd.apache.org/docs/2.2/rewrite/rewrite_guide.html

прочитайте раздел перезаписи якоря.