为什么.htaccess总是将目标页面作为变量返回?

时间:2011-07-22 20:40:51

标签: .htaccess mod-rewrite

我的.htaccess文件中有以下内容:

RewriteEngine on
RewriteBase / 
RewriteRule ^(.*)$ page.php?query=$1

但无论我在网址中输入什么内容,$1始终等于page.php

我期待发生的事情:

myurl.com/test   >> myurl.com/page.php?query=test

发生了什么:

myurl.com/test >> myurl.com/page.php?query=page.php

1 个答案:

答案 0 :(得分:1)

您可能发生了2次重定向。 page.php本身正被重定向到page.php?query=page.php。您需要将其从重定向中排除。更好的是,排除所有真实的现有文件和目录。另外,添加[QSA'] to append any additional querystring params, as well as [L]`以停止处理文件中稍后可能出现的任何进一步重写。

RewriteEngine on
RewriteBase / 

# if the request is NOT for a real file or directory
# (page.php is a real existing file)
# do the rewrite
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule ^(.*)$ page.php?query=$1 [L,QSA]