我要使用以下简单规则将domain.com/pagename
重写为/index.php?page=$pagename
:
RewriteRule ^(.*)$ index.php?page=$1 [L]
但是自相矛盾的是,我总是得到index.php
的{{1}}而不是$1
的东西,为什么?
答案 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}