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

解析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的重写。如果你有任何想法或建议如何解决这个问题,请让我知道。 提前谢谢

我们有一个由Django制作的网站。而且在访问时没有问题 本地工作环境的以下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#”标记: