Django解决url中特殊字符的问题

2024-04-08

我们有一个由 Django 制作的网站。并且访问时没有问题 本地工作环境的网址如下:

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

“c%23”是“c#”的urlencode,在本地工作正常。 但是当我们将其部署到 Bluehost 托管服务器(apache+fastcgi)上后,该 URL 已解析为新地址,如下所示:

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

这也太奇怪了吧。可能这不是 Django 的问题,但与 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] 

和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:如果这是由 httpd.conf 中的设置引起的,当我没有权限时,如何在 .htaccess 文件中覆盖它?


在进一步讨论之前,请先了解一些提示:

您是否尝试过使用其他字符,例如空格 (%20) 或带重音的 ASCII 字符?另外,您是否尝试过在 %23 之后放置其他字符(斜杠除外)以查看它们是否也被删除?

一种猜测可能是,由于 # 被视为当前页面上的锚点,因此 # 及其后面的任何内容都将在重写中被删除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django解决url中特殊字符的问题 的相关文章

随机推荐