0

我目前使用以下 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]

我曾经为每个用户创建一个新页面,但正如人们可能看到的那样,这不是一个好主意。所以我删除了所有用户页面,我会以不同的方式包含它们,但我需要将请求的页面作为获取参数传递给另一个文件。所以我决定通过不同目录中的文件路由每个主级别(/)请求的页面,如下所示:

RewriteRule ^([^/]+)$ some/page.php?requested_page=$1 [L,QSA,NC]

但是如果有人像这样请求它,它不适用于 /index.php 页面:/

我将代码更改为:

RewriteRule ^(<?!)([^/]+)$ some/page.php?requested_page=$1 [L,QSA,NC]

现在“/”请求有效,任何真正存在的页面都有效,但“假用户页面”现在不起作用。有没有办法我可以做到这两点?

4

1 回答 1

1

尝试将正则表达式更改为使用*,而不是+

RewriteRule ^([^/]*)$ some/page.php?requested_page=$1 [L,QSA,NC]

因为/请求是一个空的 URI(在应用规则之前前导斜杠被剥离)。

于 2013-08-11T05:25:40.543 回答