0

次のスタイルのページを使用するサイトがあります。

index.php?page=X&id=Y

たとえば、ブログの場合は次のようになります。

index.php?page=blog&id=65

、写真の場合は

index.php?page=picture&id=26

ユーザーが mysite.com/page または mysite.com/page/id を使用できるように書き換えルールを設定しようとしていますが、2 つのパラメーターを渡すときに問題が発生します。

何らかの理由で、正しいページにリダイレクトされ、すぐに同じページをパラメーターなしでリロードします。つまり、ロードindex.php?page=blog&id=65してからすぐにリロードindex.php?page=blogしますが、これは役に立ちません。

私が使用しているコード:

Options +FollowSymLinks
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ /index.php?page=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ index.php?page=$1&id=$2 [L]

任意の提案をいただければ幸いです。ありがとう。

4

2 に答える 2

0

mod_rewrite のドキュメント、特に [QSA] (クエリ文字列の追加) フラグについてよく読んでください。これがないと、置換文字列で新しいパラメーターを指定すると、書き換えエンジンは既存のパラメーターをダンプします。それにより、古いものを追加します。

于 2012-05-16T19:03:46.423 に答える
0

この問題に対処する最善の方法は、すべての要求をルーター ページ (通常はindex.phpファイル) にリダイレクトし、そこから実際に要求されたファイルを含めるようにすることです。これにより、何をどこにリダイレクトするかをより適切に制御でき、RegEx が簡単に達成できるよりも複雑なルールを使用できます。

あなたの特定の問題について。ウィンドウをリロードしている JavaScript であるLocation:か、PHP コードのどこかにヘッダーが含まれている可能性があります。

于 2012-05-16T17:13:01.857 に答える