mod-rewrite结合了两种不同的重写规则

时间:2015-12-03 21:50:27

标签: apache .htaccess mod-rewrite url-rewriting

我有以下重写规则:

第一条规则:

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ $1\.php

第二条规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+/.+)$ module.php?page=$1 [L,QSA]

第一条规则允许我将/myscript.php作为myscript

访问

第二个规则允许我在mydomain.com/之后获取所有内容并将其转换为查询字符串以加载module.php?page = querystring。

但是,对于第一条规则,如果我要访问/ myscript / myscript,那么我会收到内部服务器错误。此外,我似乎无法在相同的代码中运行规则1和2。因为它似乎有冲突。如果我去mydomain.com/myscript/myscript它似乎干扰myscript.php我最终得到一个结果页面= myscript / myscript.php / myscript

关于如何将两者结合起来的任何建议?

感谢。

1 个答案:

答案 0 :(得分:0)

有这样的话:

Options -MultiViews
RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)/?$ module.php?page=$1 [L,QSA]