我们已经尝试了stackoverflow的所有建议,我们可以找到为同一组RewriteConds添加多个RewriteRules,但在所有情况下,我们只能让第一个RewriteRule工作。 这是我们想要添加更多类别的单个重写的工作代码:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /designers/$1 [NC,L]
</IfModule>
以下都不起作用:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /designers/$1 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /labels/$1 [NC,L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .? - [S=2]
RewriteRule ^(.*)$ /designers/$1 [NC,L]
RewriteRule ^(.*)$ /labels/$1 [NC,L]
</IfModule>
答案 0 :(得分:1)
你的[OR]
cond几乎是正确的。当你进行逻辑反转时,你也必须否定。
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .? - [S=2]
RewriteRule ^(.*)$ /designers/$1 [NC,L]
RewriteRule ^(.*)$ /labels/$1 [NC,L]
所以你不想要!-f
,你需要-f
。请注意,S=2
会跳过 2 规则。如果您有更多类别,则需要更改它,或者只使用L
标志。