解析url中特殊字符的Django问题
我们有一个由Django制作的网站。而且在访问时没有问题 本地工作环境的以下url:解析url中特殊字符的Django问题,django,django-urls,Django,Django Urls,我们有一个由Django制作的网站。而且在访问时没有问题 本地工作环境的以下url: http://site/tags/c%23/ “c%23”是“c#”的urlencode,在本地运行良好。 但在我们将其部署到Bluehost托管服务器(apache+fastcgi)上后,此URL已解析为如下新地址: http://site/t/tags/c/ 那太奇怪了。也许这不是Django的问题,但与此有关 Apache url的重写。如果你有任何想法或建议如何解决这个问题,请让我知道。 提前谢谢
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后面(斜杠除外),以查看它们是否也被剥离
一种猜测可能是,由于#在当前页面上被视为锚定,因此#和后面的内容将在重写时被剥离。我必须同意第一个答案-如果没有访问apache配置,您可能会运气不佳。使用“CSharp”或类似的东西可能是一种方法。#在URI中有特殊的含义,与/或相同?做你对其他符号有这个问题吗?归根结底,您不应该在URI中使用#符号,除非您引用的是页面上的锚。
阅读锚重写部分。到目前为止,其他符号没有问题。#有时在stackoverflow上很有用,我们使用此url表示“c#”标记: