我使用主index.php文件来处理大部分请求,所以我的基本.htacess看起来像this one:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ /index.php?page=$1 [L]
但是我有一些请求(例如/ signin或/ signout)需要直接从.php文件中使用相同名称(/signin.php和/signout.php)处理。
所以我的.htaccess规则必须是:" if %{REQUEST_FILENAME}.php
不存在重定向到/index.php?page=$1
其他重定向到%{REQUEST_FILENAME}.php
"。
我该怎么做?
答案 0 :(得分:3)
用以下代码替换您的代码:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L,NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php !-f
RewriteRule ^(.+)$ /index.php?page=$1 [L,QSA]
这会将所有内容发送到/index.php
,这不是有效的文件或目录,并且文件系统中没有匹配的.php
。
答案 1 :(得分:-1)
您可以在index.php中处理此问题,只需重定向index.php上的每个调用。在那里,您可以阅读URL中给出的所有参数。
$aParams = explode("/", $_SERVER["REQUEST_URI"]);
现在,您可以处理所有参数并在需要时重定向。