Apache 重定向 - .htaccess - ReWriteCond

3
我试图操作博客服务器上的.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]

任何帮助都将不胜感激。

^/includes$ 中删除 $,因为它只匹配裸的 /includes,而阻止了匹配其他内容。 - Michael Berkowski
1个回答

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行可以合并为一个,但我建议将其保持为2个单独的条件,因为这样更容易阅读,并且在将来想要添加新的扩展名或排除新目录时也更容易维护。


RewriteRule ^ /sitemap.html [R=301,L] 做什么? - John Sonderson
如果上述两个条件成功,则将当前URL转发到/sitemap.html - anubhava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接