質問
Djangoが作成したWebサイトがあります。そして、アクセスするときに問題はありません ローカル作業環境の次の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の後に(スラッシュ以外の)他の文字を入れて、それらも削除されているかどうかを確認しましたか?
1つの推測として、#は現在のページのアンカーと見なされるため、#とその後のものはリライトで削除されます。
他のヒント
最初の答えに同意する必要があります-そして、Apacheの設定にアクセスできなければ、運が悪いかもしれません。 「CSharp」またはその静脈内の何かを使用する方法があります。
#はURIで特別な意味を持ち、/または?と同じです。します。他のシンボルでこの問題がありますか?最終的に、ページのアンカーを参照している場合を除き、URIで#記号を使用しないでください。
http://httpd.apache.org/docs/2.2/rewrite /rewrite_guide.html
アンカー書き換えセクションを読みます。