我在public_html / .htaccess中有这个:
RedirectMatch 301 ^/$ /site/
和一堆行如:
RedirectMatch 301 ^/contact.php$ /site/page/contact
如何将此更改为RewriteCond和RewriteRules以使用相同但从这些重写中排除public_html / test /目录中的任何内容?
答案 0 :(得分:0)
我说这可能是你想要的:
RewriteEngine on
RewriteCond
RewriteRule ^/?test/ "-" [L]
RewriteRule ^/?$ /site/ [R=301]
RewriteRule ^/?contact\.php$ /site/page/contact [R=301]
它会将所有请求传递给/test
,之后您可以实施您喜欢的任何规则。
一般提示:您应该始终更喜欢将此类规则放在http服务器(虚拟)主机配置中,而不是使用动态配置文件(.htaccess
样式文件)。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。只有在您无法控制主机配置(读取:非常便宜的托管服务提供商)或者您的应用程序依赖于编写自己的重写规则(这是一个明显的安全噩梦)的情况下,它们才被支持作为最后一个选项。 )。