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

Apache mod rewrite结合了两种不同的重写规则,apache,.htaccess,mod-rewrite,url-rewriting,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] 第一条

我有以下重写规则:

第一条规则:

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访问/myscript.php

第二条规则允许我获取mydomain.com/之后的所有内容,并将其转换为querystring以加载module.php?page=querystring

但是,对于第一条规则,如果我要访问/myscript/myscript,则会出现一个内部服务器错误。此外,我似乎无法在同一代码中运行规则1和2。这似乎有冲突。如果我访问mydomain.com/myscript/myscript,它似乎与myscript.php发生了冲突,我最终得到一个结果页面=myscript/myscript.php/myscript

关于如何将两者结合起来,有什么建议吗

谢谢。

像这样吃吧:

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]
这样做:

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]

西部最快的枪。睡一觉!!:)@anubhava虽然它在工作,但如果我有一个与myscript同名的路径,那么我会得到内部服务器错误。例如,在根目录上,我有一个名为myscript.php的脚本。因此,如果我转到mydomain.com/myscript,它将加载.php文件。但是如果我访问mydomain.com/myscript/最后的正斜杠会打断它,我会得到error@anubhava谢谢现在,如果我把a/放在最后,它会工作,但是在前倾斜杠之后的任何东西都会导致错误。例如,如果我有一个与脚本同名的路径,例如/myscript/users,但由于路径中存在myscript.php,我仍然会收到500个错误。另外,只有当我至少有两个目录级别时,重写where page=才起作用,所以如果我有/level1/则不起作用,但如果我有/level1/level2,则它会起作用works@anubhava非常感谢。“它现在看起来确实工作得很好。”“阿努巴瓦,哦,我从来没有想过。那太好了,所以最好把它留在那里。再次感谢,西方最快的枪。睡一觉!!:)@anubhava虽然它在工作,但如果我有一个与myscript同名的路径,那么我会得到内部服务器错误。例如,在根目录上,我有一个名为myscript.php的脚本。因此,如果我转到mydomain.com/myscript,它将加载.php文件。但是如果我访问mydomain.com/myscript/最后的正斜杠会打断它,我会得到error@anubhava谢谢现在,如果我把a/放在最后,它会工作,但是在前倾斜杠之后的任何东西都会导致错误。例如,如果我有一个与脚本同名的路径,例如/myscript/users,但由于路径中存在myscript.php,我仍然会收到500个错误。另外,只有当我至少有两个目录级别时,重写where page=才起作用,所以如果我有/level1/则不起作用,但如果我有/level1/level2,则它会起作用works@anubhava非常感谢。“它现在看起来确实工作得很好。”“阿努巴瓦,哦,我从来没有想过。那太好了,所以最好把它留在那里。再次非常感谢。