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
прочитайте раздел перезаписи якоря.