2011-10-19 13 views
1

私のURLは拡張子がないので、.php拡張子はありません。また、URLに後続のスラッシュ。あなたが.phpのphp拡張子を削除し、拡張子.phpのURLのアクセスを停止し、末尾のスラッシュを削除します。

でそれにアクセスしようとした場合

以下は、PHP拡張とthensを削除するには、拡張子のURLにリダイレクトし、私はあなたが/でアクセスを停止し、リダイレクトするルールを書き始めたが、それは動作しません。どんな助け?あなたは後方物事を見ている

#this removes php extension 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

# stops you accessing url with.php 
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^.?\ ]+)\.php 
RewriteRule ^([^.]+)\.php(/.+)?$ /$1%{PATH_INFO} [R=301] 

# stops you accessing url with/**DOESNT WORK** 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)/$ /$1 [R=301,L] 

答えて

1

:あなたが持っている最初のルールは、「PHP拡張モジュールを削除しない」、それはすでに、技術的に(任意のそのドンがそれを持っていないURLにを追加します期間は含まれていません)。

は、私はあなたがより多くのこのような何かをしたいと思う:

RewriteEngine On 
RewriteBase/

# Remove .php from any URLs that contain it, using an external 301 redirect 
RewriteCond %{QUERY_STRING} !^no-redirect-loop(&|$) 
RewriteRule ^(.*)\.php$ $1 [NS,R=301,L] 

# Now add it back internally 
RewriteCond %{QUERY_STRING} !^no-redirect-loop(&|$) 
RewriteRule ^(.*)$ $1.php?no-redirect-loop [NS,QSA] 

編集:another similar answerをデバッグながら、私はここに掲載以前のソリューションは、.htaccessファイルで作業するつもりではなかったことに気づきました。上記の例のコードを編集して、代わりにリダイレクトループを壊すためにかなり醜いklugeを使用しました。 klugeの副作用は、すべてのスクリプトに空のURLパラメータno-redirect-loopが追加されることです。

関連する問題