mod重写变量始终是index.php

时间:2018-07-20 11:16:07

标签: apache mod-rewrite

我要使用以下简单规则将domain.com/pagename重写为/index.php?page=$pagename

RewriteRule ^(.*)$ index.php?page=$1 [L]

但是自相矛盾的是,我总是得到index.php的{​​{1}}而不是$1的东西,为什么?

2 个答案:

答案 0 :(得分:2)

您有一个无限的重定向循环,这就是为什么您得到意外结果的原因(很奇怪,您没有收到内部服务器错误...)

这是您想要的规则

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)$ /index.php?page=$1 [L]

在内部重写URL之前,它检查URL是否不是物理文件夹/文件。该规则仅对一级网址有效(例如http://example.com/placeholder而不是http://example.com/placeholder/somethingelse

答案 1 :(得分:1)

尝试一下

http://example.com/pagename => http://example.com/index.php?page= $ pagename

RewriteRule ^pagename$ /index.php?page=$pagename&%{QUERY_STRING}