Проблема Django с разрешением специальных символов в URL-адресе

StackOverflow https://stackoverflow.com/questions/410993

  •  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

Прочтите раздел о переписывании якоря.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top