.htaccess 如何具有多个条件->;你有权进入吗?

.htaccess 如何具有多个条件->;你有权进入吗?,.htaccess,.htaccess,我道歉,如果我的解释是可怕的,因为我是一个初学者 对于我的访问权限,我有 RewriteEngine On RewriteBase / php_value magic_quotes_gpc off php_value magic_quotes_runtime off RewriteRule ^c-(.*)$ catpost.php?id=$1 [L] RewriteCond %{REQUEST_FILENAME} !-d [NC] RewriteCond %{REQUEST_FIL

我道歉,如果我的解释是可怕的,因为我是一个初学者

对于我的访问权限,我有

RewriteEngine On    
RewriteBase /

php_value magic_quotes_gpc off
php_value magic_quotes_runtime off

RewriteRule ^c-(.*)$ catpost.php?id=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^(.*)$ page.php?p=$1 [QSA]
到目前为止,我相信你知道它做什么-类别和页面。现在,我想添加一些类似于

RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^(.*)$ viewpost.php?id=$1 [QSA,L]
到最后,这不起作用,也不起作用

RewriteCond %{REQUEST_FILENAME} !-d [NC]    
RewriteCond %{REQUEST_FILENAME} !-f [NC]    
RewriteRule ^(.*)$ page.php?p=$1 [QSA]
RewriteRule ^(.*)$ viewpost.php?id=$1 [QSA,L]

工作。那么,有人有解决方案吗?

您的原始规则通过
(.*)
将所有内容重写到
page.php
。然后应该将什么重写到
viewpost.php
?请给出一个输入URL和重写输出URL的示例,如
viewpost.php?id=…
您的重写条件检查任何不是目录或文件的内容,并将其重写到
viewpost.php?id=
。此时,您不再具有与这些条件的匹配项,因此不会触发重写(假设存在viewpost.php!)。那么,你到底想做什么?您希望在什么情况下运行viewpost.php,以及何时运行page.php?在当前的重写条件下,您无法同时完成这两项任务。@MichaelBerkowski感谢Michael和Phil。多亏了你。我现在意识到.htaccess无法确定何时使用viewpost.php和page.php,所以我改为:RewriteEngine On
RewriteBase/php\u value magic\u quotes\u gpc off php\u value magic\u quotes\u runtime off RewriteRule ^c-(*)$catpost.php?id=$1[L]RewriteRule^p-(*)$viewpost.php?id=$1[L]RewriteCond%{REQUEST_FILENAME}-d[NC]重写条件%{REQUEST_FILENAME}-f[NC]RewriteRule^(.*)$page.php?p=$1[QSA,L]
第2部分:我的答案——它基本上使所有前面带c的URL都由catpost.php处理,所有前面带p的URL都通过viewpost.php,其余的通过page.php——我稍后会修改这些内容,这样我就可以定制404页面了。因为我要到8小时后才能回答这个问题,所以我把它放在这里。谢谢你们!