0

末尾のスラッシュの有無にかかわらず使用できるわかりやすい URL を作成する mod_rewrite ルールを作成しようとしています。

例えば。domain.com/index.php?id=421 は、 domain.com/421 または domain.com/421/ と入力するユーザーがアクセスできるようにします。

私は現在(かなり単純に見える)ルールを持っています:

RewriteEngine On
RewriteRule /(.*)$ /index.php?id=$1  

末尾にスラッシュがある限り問題なく動作しますが、スラッシュなしで URL を入力すると、domain.com/domain.com/index.php?id=421 に書き換えられます。

私はここで完全に深みを失っているので、どんな助けでも大歓迎です。

4

1 に答える 1

1

OK、これを修正しました。まず、私が長い間ぐるぐる回ってしまった理由は、私のブラウザーが .htaccess ファイルをキャッシュしていたためでした (彼らがそんなことをしたとは知らなかった!)。何時間にもわたる欲求不満の間に読んだすべてのおかげで、問題を解決するのは簡単でした。私の解決策は次のとおりです:-

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301] 
RewriteRule (.*)/ index.php?id=$1 [L]

このコードの説明が必要な場合は、そのほとんどがhttp://enarion.net/web/htaccess/trailing-slash/でカバーされています。

于 2013-01-23T05:21:26.937 に答える