.htaccess仅当两个条件都满足时才执行规则

.htaccess仅当两个条件都满足时才执行规则,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,这样做的目的是,如果用户放入mysite.com/blarg并且/blarg不是真正的目录或文件,它会将thme发送到index.php?page=blarg 但当我转到mysite.com/iphone时,它是一个真正的目录,而不是一个文件,我被定向到mysite.com/iphone/?page=iphone&other=,这是因为存在带有RewriteCond的最后一个RewriteRule行。请记住,RewriteCond仅适用于下一个RewriteRule 使用此代码: Rewrite

这样做的目的是,如果用户放入mysite.com/blarg并且/blarg不是真正的目录或文件,它会将thme发送到index.php?page=blarg


但当我转到mysite.com/iphone时,它是一个真正的目录,而不是一个文件,我被定向到mysite.com/iphone/?page=iphone&other=

,这是因为存在带有RewriteCond的最后一个RewriteRule行。请记住,RewriteCond仅适用于下一个RewriteRule

使用此代码:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(\w+)/((\w+))?$ ?page=$1&other=$3 [L]
RewriteRule ^(\w+)(/(\w+))?$ ?page=$1&other=$3 [L]
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^(\w+)/((\w+))?$ ?page=$1&other=$3 [L]
RewriteRule ^(\w+)(/(\w+))?$ ?page=$1&other=$3 [L]