在给定DirectoryIndex为“1”的情况下,MOD_REWRITE(RewriteCond)应该忽略domain.tld / 1

时间:2014-07-05 10:53:34

标签: regex apache mod-rewrite url-rewriting

if it begins with 0 to 9 then ignore
if it begins with z then ignore.

这就是这个mod-rewrite代码所说的..

<Directory "/0/2/2">
Options FollowSymLinks
AllowOverride All
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/([0-9])$
RewriteCond %{REQUEST_URI} !^/z$
RewriteRule ^(.*) /z [L]
</Directory>

目录索引是“1”

DirectoryIndex 1

在httpd.conf

这意味着当我去

 domain.tld/

这应该与

相同
 domain.tld/1

因此被上面的mod重写规则忽略。

但它并没有忽略它..

..它忽略了domain.tld / 1就好了..

但不会忽略

 domain.tld/

1 个答案:

答案 0 :(得分:0)

if it begins with 0 to 9 then ignore
if it begins with z then ignore.
that is what this mod-rewrite code says..

实际上,它并没有说明,因为$是字符串结束锚。这里有一些调整。两个conds被合并为一个,/1文件夹检查在规则中。

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/?[z0-9] [NC]
RewriteRule ^/(?!1)(.*) /z [L,NE]

这假设它存在于httpd.conf中。如果它位于.htaccess,请更改规则:

RewriteRule ^/?(?!1)(.*) z [L,NE]