我目前使用以下htaccess代码删除所有php扩展,并且还允许加载/index.php页面,而不会使用“index”这个词来查看删除.php的费用:
RewriteRule ^$ index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+[^/])$ $1.php [L]
我曾经为每个用户创建一个新页面,但正如人们可能看到的那样,这不是一个好主意。所以我删除了所有的用户页面,我会以不同的方式包含它们,但我需要将请求的页面作为get参数传递给另一个文件。所以我决定将每个主要级别(/)请求页面路由到不同目录中的文件,如下所示:
RewriteRule ^([^/]+)$ some/page.php?requested_page=$1 [L,QSA,NC]
但是如果有人像这样请求它,那么它对/index.php页面不起作用:/
我将代码更改为:
RewriteRule ^(<?!)([^/]+)$ some/page.php?requested_page=$1 [L,QSA,NC]
现在“/”请求有效,任何真正存在的页面都可以使用,但“假用户页面”现在不起作用。我有可能做到这两点吗?
答案 0 :(得分:1)
尝试更改正则表达式以使用*
而不是+
:
RewriteRule ^([^/]*)$ some/page.php?requested_page=$1 [L,QSA,NC]
因为/
请求是一个空URI(在应用规则之前剥离前导斜杠)。