2009-01-04 19 views
7

Tenemos un sitio web creado por Django. Y no hay ningún problema en que el acceso siguiente url en el medio ambiente de trabajo local:Django problema de resolución de caracteres especiales en la url

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

"c% 23" es urlencode de "C#", que funciona bien a nivel local. Pero después de que implementarlo en Bluehost servidor de alojamiento (Apache + fastcgi), este URL se ha resuelto a una nueva dirección como esta:

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

Eso es demasiado extraño. Probablemente no sea un problema de Django, pero tenga algo que ver con la reescritura de la url de Apache . Si tiene alguna idea o sugerencia sobre cómo solucionar esto, hágamelo saber. Gracias de antemano.

Aquí está el archivo .htaccess pueden ser considerados:

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] 

y el archivo 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 esto es causado por la configuración en httpd.conf, ¿Cómo puedo anular el archivo .htaccess mientras no tengo permiso para hacerlo?

Respuesta

5

sólo algunos consejos antes de ir más lejos:

¿Has probado con otros personajes como un espacio (% 20) o un carácter ASCII con acento? Además, ¿ha intentado poner otros caracteres después del% 23 (que no sea la barra inclinada) para ver si también están despojados?

Una suposición podría ser que como el # se considera como un ancla en la página actual, el # y lo que está después se eliminarán en la reescritura.

1

Tendría que estar de acuerdo con la primera respuesta, y sin acceso a la configuración de Apache, puede que no tenga suerte. Usar 'CSharp' o algo así podría ser el camino a seguir.

1

# tiene un significado especial en URI, igual que/o? hace. ¿Tienes este problema con otros símbolos? En última instancia, no deberías estar usando un signo # en un URI de todos modos, a menos que te estés refiriendo a un ancla en la página.

+0

Ningún problema encontrado hasta ahora para otros símbolos. # Es útil a veces en contexto como en stackoverflow, usamos esta url para expresar la etiqueta "C#": http: //stackoverflow.com/questions/tagged/c%23 – chagel