Проблема Django с разрешением специальных символов в URL-адресе
-
03-07-2019 - |
Вопрос
У нас есть сайт, созданный Django.И нет проблем при доступе после URL -адреса в местной рабочей среде:
http://site/tags/c%23/
«c%23» — это URL-код «С#», который отлично работает локально.Но после того, как мы развернули его на хостинг-сервере Bluehost (apache+fastcgi), этот URL-адрес был преобразован в новый адрес, например:
http://site/t/tags/c/
Это слишком странно.Вероятно, это не проблема Джанго, но какое -то отношение к переписыванию Apache URL.Если у вас есть идеи или предложения, как это исправить, дайте мне знать.Заранее спасибо.
Вот файл .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/$1 [L]
и файл send.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"])
ОБНОВЛЕНИЕ: Если это вызвано настройками в httpd.conf, как я могу переопределить файл .htaccess, если у меня нет на это разрешения?
Решение
Несколько советов, прежде чем идти дальше:
Пробовали ли вы использовать другие символы, например пробел (%20) или символ ASCII с диакритическим знаком?Кроме того, пробовали ли вы поместить другие символы после %23 (кроме косой черты), чтобы проверить, удалены ли они?
Можно предположить, что, поскольку # считается привязкой на текущей странице, # и все, что находится после него, будет удалено при перезаписи.
Другие советы
Я должен согласиться с первым ответом - и без доступа к конфигурации Apache вам может не повезти.Возможно, лучше использовать «CSharp» или что-то в этом роде.
# имеет особое значение в URI, такое же, как / или ?делает.Есть ли у вас проблема с другими символами?В конечном счете, вам все равно не следует использовать знак # в URI, если только вы не ссылаетесь на привязку на странице.
http://httpd.apache.org/docs/2.2/rewrite/rewrite_guide.html
Прочтите раздел о переписывании якоря.