36

URL を別のページに mod_rewrite したいのですが、追加されたクエリ文字列も保持したいと考えています。

RewriteEngine On

#enforce trailing slashes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !#
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://localhost/siteroot/$1/ [L,R=301]

RewriteRule ^apps/([A-Za-z0-9-_]+)/?$ index.php&app=$1

したがって、ユーザーがにアクセスするapps/app1/と、index.php?app=app1が表示されます。apps/app1/?variable=xただし、訪問が返されるように、オプションのクエリ文字列を保持できるようにしたいと考えていますindex.php?app=app1&variable=x

これを実現する mod_rewrite ルール/条件は何ですか?

4

1 に答える 1

70

[QSA]フラグを追加する必要があります(「クエリ文字列追加」)

RewriteRule ^apps/([A-Za-z0-9-_]+)/?$ index.php&app=$1 [L,QSA]

[R]このような内部書き換えとは対照的に、フラグを使用したページ 301 リダイレクトでは、クエリ文字列が自動的に追加されます。[QSA]ただし、内部書き換えのために強制する必要があります。

于 2012-10-13T12:40:34.043 に答える