1

ルートクエリ文字列パラメータを使用して、すべてのURLをindex.phpファイルにリダイレクトする.htaccessファイルがあります。

# Enable Mod_rewrite
RewriteEngine on

# Redirect pretty URLs to the index file
RewriteRule ^([\w\/\-]+)/?$ index.php?route=$1

これは、クエリ文字列を含むURLを除いて、うまく機能します。たとえば、エラーコード(/admin/login?error=1)を付けてログイン画面にリダイレクトするフォームがあります。明らかに、問題は、$_GET[error]パラメーターがメインスクリプトに渡されないことです。

これらのパラメータをスクリプトに渡すにはどうすればよいですか?

4

3 に答える 3

7

[QSA]をフラグとして追加するだけです。

'qsappend | QSA'(クエリ文字列の追加)このフラグは、書き換えエンジンに、置換文字列のクエリ文字列部分を、置換するのではなく、既存の文字列に追加するように強制します。これは、書き換えルールを介してクエリ文字列にデータを追加する場合に使用します。

RewriteRule ^([\w\/\-]+)/?$ index.php?route=$1 [QSA]

于 2012-06-07T23:53:29.613 に答える
3

これは私の標準のmod_rewriteエントリです(質問に合わせて変更されています)。画像やインクルードなどの潜在的な痛みを軽減するために追加しています。既存のファイルを除くすべてをリダイレクトします。

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([\w\/\-]+)/?$ index.php?route=$1 [QSA]
</IfModule>
于 2012-06-08T00:05:30.507 に答える
2

フラグQSAを設定します-クエリ文字列を追加します

# Enable Mod_rewrite
RewriteEngine on

# Redirect pretty URLs to the index file
RewriteRule ^([\w\/\-]+)/?$ index.php?route=$1 [QSA]

(私がしたのは[QSA]を追加することだけでした)

Apache Mod_Rewriteドキュメントには、フラグに関する詳細があります。

于 2012-06-07T23:53:28.737 に答える