Apache Redirects - .htaccess - ReWriteCond

时间:2013-07-18 17:37:02

标签: apache .htaccess redirect mod-rewrite

我正在尝试操纵我的博客服务器上的.htaccess文件,以允许重定向某些内容,同时允许其他内容被访问。

我想要做的是,允许任何扩展名为(gif|jpg|css|js|ico|png)的文件与目录/includes/和文件sitemap.html一起访问,而我想要的所有其他流量发送到sitemap.html文件。

这可能吗?

这是我正在尝试使用的代码,但它似乎没有像预期的那样工作。重定向与文件扩展名匹配,允许访问sitemap.html文件,但是我想要允许访问的/includes/目录从用户的角度来看,无论实际目录中的文件是什么,似乎仍然是重定向到sitemap.html文件。

RewriteEngine On
RewriteCond %{REQUEST_URI} !(\.(gif|jpg|css|js|ico|png)$|^/includes$|^/sitemap\.html$)
RewriteRule ^(.*)$ /sitemap.html [R=301,L]

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

试试这个:

RewriteCond %{REQUEST_URI} !\.(gif|jpg|css|js|ico|png)$ [NC]
RewriteCond %{REQUEST_URI} !^/(sitemap\.html|includes(/.*|))$ [NC]
RewriteRule ^ /sitemap.html [R=301,L]

当然,两个RewriteCond行可以合并为1,但我建议将它保持为2,因为这样更易于阅读和易于维护,以防您希望在将来添加新扩展或新目录时进行排除。