私はこれに似たいくつかの他の質問を見たことがありますが、答えは私のために働いていません。うまくいけば、誰かが光を当てることができます。
私はhttp://website.com/show/?id=9999
のようなURLを持っていますが、私はこのページのPHPスクリプトで$_GET['id']
を使用しています。書き換えルールを使用してURLをhttp://website.com/show/9999/
に変換すると、$_GET['id']
は機能しなくなりました。
ここで私が使用している書き換えルールです:
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^show/(.*)$ /show/?id=$1 [NC,L,QSA]
なぜ "!-f" *と* "!-d"を持っていますか? –
RewriteLogをチェックしてループを明らかにし、どのように '。()'があなたのパラメータを食べるかを調べます。 – mario
!-fと!-dは、 "リテラルファイルではない"と "リテラルディレクトリではない"を意味します。これにより、スタイルシート、画像、mp3、javascriptなどを、書き換えルールを妨げずに表示することができます。 – mopsyd