2012-02-12 11 views
1

私はより良いURLに.htaccess mod_rewriteを使用しています。私が最後に末尾のスラッシュ/を置けば.htaccess mod_rewriteと末尾のスラッシュの問題を解決するには

RewriteRule ^artist/([0-9]+) artist.php?id=$1 
RewriteRule ^artists/(.+) artists.php?culture=$1 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

それは動作しますが、以下は

は、/artist/123456/artist.php?id=123456をオンに私の.htaccessファイルの一部である/artists/arabic/artists.php?culture=arabic、および.PHPを削除します/artist/arabic/のように、404エラーをスローします。これをどうすれば解決できますか?単に後続のスラッシュを削除するだけでうまくいくでしょうが、これでどのようにするのか分かりません。ユーザーが誤って/などを追加して、そのページが存在しないと思って混乱してしまわないようにしたいだけです。

ありがとうございます!

答えて

3

はあなただけ/?

# Optional trailing slash... 
RewriteRule ^artist/([0-9]+)/? artist.php?id=$1 
#--------------------------^^^^ 
RewriteRule ^artists/(.+) artists.php?culture=$1 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 
+0

おかげで最初のルールにオプションの末尾にスラッシュを追加する必要があり、それが動作します。そして、驚くべきことに、それは別のディレクトリの.htaccessファイルで動作します(オプションの/実際にルールを入れずに...最初のルールに置いたときの動作方法は?) – Nathan

+0

ああ、そうです[L]フラグはオフのままにされ、次の一致に落ちました。あなたは通常それを望んでいないでしょう。私は無意識にそれを私の答えから外しました。 –

関連する問題