2009-01-04 7 views
7

Nous avons un site web fait par Django. Et il n'y a pas de problème lorsque l'accès suivant sur l'environnement url de travail local:Problème Django de résolution des caractères spéciaux dans l'URL

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

"c% 23" est urlencode de "C#", qui fonctionne très bien au niveau local. Mais après que nous déployons sur Bluehost serveur d'hébergement (apache + FastCGI), cette URL a été résolu à une nouvelle adresse comme celui-ci:

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

C'est trop bizarre. Probablement ce n'est pas un problème de Django, mais quelque chose à voir avec Réécriture d'Apache url. Si vous avez une idée ou une suggestion pour résoudre ce problème, faites-le moi savoir. Merci d'avance.

Voici le fichier .htaccess peut être considéré:

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] 

et le fichier 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: Si cela est causé par des paramètres httpd.conf, comment puis-je remplacer dans le fichier .htaccess alors que je n'ai pas la permission?

Répondre

5

Juste quelques conseils avant d'aller plus loin:

Avez-vous essayé avec d'autres personnages, comme un espace (% 20) ou un caractère ASCII accentués? En outre, avez-vous essayé de mettre d'autres caractères après le% 23 (autre que la barre oblique) pour voir s'ils sont également dépouillés? Une supposition pourrait être que comme # est considéré comme une ancre sur la page en cours, le # et tout ce qui est après seront supprimés dans la réécriture.

1

Je devrais être d'accord avec la première réponse - et sans accès à la configuration d'apache, vous pourriez ne pas avoir de chance. Utiliser 'CSharp' ou quelque chose dans cette veine pourrait être le chemin à parcourir.

1

# a une signification particulière dans l'URI, identique à/ou? Est-ce que. Avez-vous ce problème avec d'autres symboles? En fin de compte, vous ne devriez pas utiliser un signe # dans une URI de toute façon, sauf si vous faites référence à une ancre sur la page.

+0

Aucun problème trouvé jusqu'à présent pour les autres symboles # est utile parfois dans un contexte comme sur stackoverflow, nous utilisons cette URL pour exprimer la balise "C#": http: //stackoverflow.com/questions/tagged/c%23 – chagel

Questions connexes