0

htaccessには次のルールがあります

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .+ redirect.php [L]
RewriteRule ^(.*)\.(?!js|css|png)([^.]*)$ redirect.php [L]

クエリ文字列を除いて、すべてが完璧に機能します。
何らかの理由でクエリ文字列が消えます...

私はredirect.phpで次のURLmyweb.com/subscribe?email=blablablaを取得しました私は次の行を持っています:

echo $_GET['email']; //should echo the email

そしてそれは何もエコー
しません...*私はそれがredirect.phpに書き換えられることを確認しました

なぜそしてどのようにそれを修正するのかアイデアはありますか?

4

1 に答える 1

0

次の手順で解決しました。

  1. css、js、pngなどのファイルを書き直したくなかったので、最後のルールでは正規表現に含まれていました-分割しました。
  2. 最後の2つのルールに[QSA]フラグを追加しました
  3. 追加したRewriteCond %{REQUEST_FILENAME} !-f
  4. に変更RewriteCond %{REQUEST_FILENAME} -dされましたRewriteCond %{REQUEST_FILENAME} !-d

これはそれがどのように見えるかです:

RewriteEngine on
RewriteBase /
RewriteRule \.(ico|css|png|js|txt|xml)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .+ redirect.php [QSA,L]
RewriteRule ^(.*)$ redirect.php [QSA,L]
于 2013-03-10T17:07:59.050 に答える