我有一个主域名和5个插件作为独立站点。一切都很好,但是当点击primary.com/addon1.com
时,他/她可以通过主网站访问不相关的内容。我想阻止这一点。
我正在通过主要root的htaccess寻找解决方案,而不是编辑插件的5个htaccess文件。
简单地说,我在初级htaccess中尝试了以下代码,但它不起作用。我尝试了很多其他选择,但是没有用。为什么?这有什么问题?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} (.*)primary\.com$
RewriteRule ^/(addon1|addon2|addon3|addon4|addon5)(.*)$ http://primary.com [R=301,L]
</ifModule>
答案 0 :(得分:0)
RewriteRule
的{{3}}解释了规则模式应用于请求URL的哪个部分:如果您在动态配置文件的上下文中使用该规则,则为相对路径部分(你做)。
relative 路径表示:没有前导斜杠(/
),这将是绝对路径。一旦开始考虑这种动态配置文件的逻辑,这就绝对有意义。
所以你可以从模式中删除前导斜杠,但我认为将它作为可选项更好。这样,无论应用在何处,动态配置文件或真实主机配置中,您的规则都将起作用:
RewriteEngine On
RewriteCond %{HTTP_HOST} (^|\.)primary\.com$
RewriteRule ^/?(addon1\.com|addon2\.com)(/|$) http://primary.com/ [R=301]
总的来说:您应该始终更喜欢将这些规则放在http服务器主机配置中,而不是使用动态配置文件(&#34; .htaccess&#34;)。这些动态配置文件增加了复杂性,通常是导致意外行为的原因,难以调试,它们确实减慢了http服务器的速度,通常什么都不做,他们可以打开安全恶梦的途径。它们仅适用于您无法访问真正的http服务器主机配置的情况(阅读:非常便宜的服务提供商)。