htaccess 重写规则或 PHP 问题


htaccess rewrite rules, or a PHP issue?

我正在编写一个主要由我自己使用的小型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]