2009-01-04 107 views
7

我們有一個由Django製作的網站。還有就是當對當地的工作環境訪問 以下網址沒問題:解決url中特殊字符的Django問題

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

「C%23」是「C#」,在本地工作正常進行urlencode。 但是經過我們對BlueHost的部署託管服務器(Apache的FastCGI的+),該網址已經被解析到一個新的地址是這樣的:

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

這太不可思議。可能它不是Django的問題,但與 Apache網址的重寫有關。如果你有任何想法或建議如何解決這個問題,請讓我知道。 在此先感謝。

這裏是.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文件中重寫,而我沒有權限?前

回答

5

只是一些提示走得更遠:

您是否嘗試過與其他字符,如空間(20%)或重音ASCII字符嗎?另外,你有沒有試過在%23(斜線除外)之後放置其他字符以查看它們是否被剝離?

有人猜測可能是因爲#被認爲是當前頁面的錨點,#和後面的內容將在重寫中被剝離。

1

我不得不同意第一個答案 - 如果沒有訪問apache配置,你可能會倒黴。使用「CSharp」或其他方法可能是一條可行的路。

1

#在URI中有特殊含義,與/或?相同。確實。你有其他符號這個問題嗎?最終,你不應該在URI中使用#號,除非你指的是頁面上的錨點。

+0

到目前爲止沒有發現任何問題,其他符號#有時在上下文中很有用,就像在stackoverflow上一樣,我們使用這個URL來表示「c#」標記:http://stackoverflow.com/questions/tagged/c%23 – chagel 2009-03-19 20:13:52