htaccess重定向除两个以外的所有URL

时间:2016-03-17 10:50:00

标签: php .htaccess

目前,我正在将所有网址重定向到我的index.html文件:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.html$
RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png|css|js)$
RewriteRule .* /index.html [L,R=302]

我想排除两个网址,例如:

www.mydomain.com/i-am-a-domain
www.mydomain.com/super-cool

我找到了几个要排除网址的代码段,但我无法将它们包含在内,因为它们使用了不同的设置(至少我认为是这样)。

RewriteCond设置条件时,我想我必须在这里添加一行。我试过添加:

RewriteCond %{REQUEST_URI} !/(i-am-a-domain|super-cool)\ [NC]

哪个不起作用。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

更改现有条件:

RewriteEngine on

RewriteCond %{REQUEST_URI} !^/(index\.html|i-am-a-domain|super-cool)/?$ [NC]
RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png|css|js)$
RewriteRule ^ /index.html [L,R=302]

但是如果你在.htaccess中也有其他规则,那么我建议使用THE_REQUEST变量,在执行一些内部重写规则后不会被覆盖。

RewriteCond %{THE_REQUEST} !\s/+(index\.html|i-am-a-domain|super-cool)[?\s/] [NC]
RewriteCond %{THE_REQUEST} !\.(gif|jpe?g|png|css|js)\sHTTP
RewriteRule ^ /index.html [L,R=302]