【问题标题】:Django problem of resolving special characters in urldjango解决url中特殊字符的问题
【发布时间】:2010-09-29 11:41:12
【问题描述】:

我们有一个由 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 文件?

【问题讨论】:

    标签: django django-urls


    【解决方案1】:

    在继续之前只是一些提示:

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

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

    【讨论】:

      【解决方案2】:

      我必须同意第一个答案 - 如果无法访问 apache 配置,您可能会不走运。使用“CSharp”或类似的东西可能是要走的路。

      【讨论】:

        【解决方案3】:

        # 在 URI 中具有特殊含义,与 / 或 ? 相同做。您是否对其他符号有此问题?最后,无论如何,您都不应该在 URI 中使用 # 符号,除非您指的是页面上的锚点。

        【讨论】:

        【解决方案4】:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-10-12
          • 2016-05-05
          • 2021-07-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-19
          相关资源
          最近更新 更多