我正在编写一个主要由我自己使用的小型Web应用程序,所以我对花哨的框架和页面模板等不感兴趣。
我需要能够重写这些网址:
/?page=parks
/?page=park&id=1
到
/parks
/park/1
现在,我已经非常接近以下规则:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}'.php -f
RewriteRule ^([^/]*)$ /?page=$1 [L]
RewriteRule ^([^/]+)/([^/]+)$ /?page=$1&id=$2 [L]
这适用于我拥有的大多数页面,但是如果我执行 URL/设置,它会中断。如果我回显 $_GET['页面'],我会得到"inc"。我不知道为什么。这是PHP问题,还是我的规则错误?
你不需要
RewriteCond %{REQUEST_FILENAME}'.php -f
条件。
您可以使用:
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^([^/]+)/?$ /?page=$1 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/?$ /?page=$1&id=$2 [L,QSA]