如何使用RewriteRules和Conds替换RedirectMatch以排除目录

时间:2017-08-10 18:57:49

标签: .htaccess

我在public_html / .htaccess中有这个:

RedirectMatch 301 ^/$ /site/

和一堆行如:

RedirectMatch 301 ^/contact.php$ /site/page/contact

如何将此更改为RewriteCond和RewriteRules以使用相同但从这些重写中排除public_html / test /目录中的任何内容?

1 个答案:

答案 0 :(得分:0)

我说这可能是你想要的:

RewriteEngine on
RewriteCond
RewriteRule ^/?test/ "-" [L]
RewriteRule ^/?$ /site/ [R=301]
RewriteRule ^/?contact\.php$ /site/page/contact [R=301]

它会将所有请求传递给/test,之后您可以实施您喜欢的任何规则。

一般提示:您应该始终更喜欢将此类规则放在http服务器(虚拟)主机配置中,而不是使用动态配置文件(.htaccess样式文件)。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。只有在您无法控制主机配置(读取:非常便宜的托管服务提供商)或者您的应用程序依赖于编写自己的重写规则(这是一个明显的安全噩梦)的情况下,它们才被支持作为最后一个选项。 )。