Django problema de resolver caracteres especiais na url
-
03-07-2019 - |
Pergunta
Temos um site feito por Django. E não há nenhum problema quando o acesso seguinte url no ambiente de trabalho local:
http://site/tags/c%23/
"c% 23" é urlencode de "c #", que funciona bem localmente. Mas depois que implantá-lo em Bluehost hospedagem servidor (apache + fastcgi), este URL foi resolvido para um novo endereço assim:
http://site/t/tags/c/
Isso é muito estranho. Provavelmente não é um problema do Django, mas tem algo a ver com reescrita do Apache url. Se você tem alguma idéia ou sugestão como corrigir isso por favor me avise. Agradecemos antecipadamente.
Aqui está o arquivo .htaccess pode ser considerado:
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]
eo arquivo dispatch.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:? Se isso é causado pelas configurações no httpd.conf, como posso substituir no arquivo .htaccess, enquanto eu não tenho permissão para ele
Solução
Apenas algumas dicas antes de ir mais longe:
Você já tentou com outros personagens, como um espaço (20%) ou um caractere ASCII acentuado? Além disso, você já tentou colocar outros personagens após o% 23 (à excepção da barra) para ver se eles estão despojado também?
Uma suposição pode ser que como o # é considerado como uma âncora na página atual, o # e tudo o que é depois será retirado na reescrita.
Outras dicas
Eu tenho que concordar com a primeira resposta - e sem acesso à configuração do apache, você pode estar fora de sorte. Usando 'CSharp' ou algo nesse sentido pode ser o caminho a percorrer.
# tem um significado especial na URI, mesmo que / ou? faz. Você tem este problema com outros símbolos? Em última análise, você não deve estar usando um sinal # em um URI de qualquer maneira, a menos que você está se referindo a uma âncora na página.
http://httpd.apache.org/docs/2.2/rewrite /rewrite_guide.html
Leia a seção de reescrever âncora.