0

我的 htaccess 中有以下规则

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

一切都很完美,除了一件事,查询字符串。
由于某种原因,查询字符串消失了......

我在 redirect.php 中得到了以下 url myweb.com/subscribe?email=blablabla 我有以下行:

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

它没有回显任何东西......
*我检查它确实重写为redirect.php

任何想法为什么以及如何解决它?

4

1 回答 1

0

通过以下步骤解决:

  1. 我不想重写 css、js、png 等文件,所以在我的最后一条规则中,它包含在正则表达式中 - 我将其拆分。
  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 回答