.htaccess 阻止主域显示附加域';内容作为其子文件夹

.htaccess 阻止主域显示附加域';内容作为其子文件夹,.htaccess,addon-domain,.htaccess,Addon Domain,我有一个主域名和5个插件作为独立的网站。一切都很好,但当你点击primary.com/addon1.com,他/她可以通过primary网站访问不相关的内容。我想阻止这一切 我正在寻找一个解决方案,通过htaccess在根的主要,而不是编辑5 htaccess文件的插件 简单地说,我在主htaccess中尝试了下面的代码,但它不起作用。我尝试了很多其他的选择,但都不起作用。为什么?这有什么问题 <IfModule mod_rewrite.c> RewriteEngine On Rew

我有一个主域名和5个插件作为独立的网站。一切都很好,但当你点击
primary.com/addon1.com
,他/她可以通过primary网站访问不相关的内容。我想阻止这一切

我正在寻找一个解决方案,通过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>

重新启动发动机
重写cond%{HTTP_HOST}(.*)primary\.com$
重写规则^/(附件1 |附件2 |附件3 |附件4 |附件5)(.*)$http://primary.com [R=301,L]
重写规则的说明了规则模式应用于请求URL的哪一部分:在动态配置文件的上下文中使用规则时的相对路径部分

相对路径意味着:没有前导斜杠(
/
),这将是绝对路径。一旦您开始考虑这种动态配置文件的逻辑,这就绝对有意义了

<>你可以从模式中删除主斜杠,但我认为最好是让它成为可选的。这样,无论规则应用于何处、在动态配置文件中还是在实际主机配置中,规则都将起作用:

RewriteEngine On
RewriteCond %{HTTP_HOST} (^|\.)primary\.com$
RewriteRule ^/?(addon1\.com|addon2\.com)(/|$) http://primary.com/ [R=301]


还有一个一般性的注释:您应该总是更喜欢将这些规则放在http服务器主机配置中,而不是使用动态配置文件(“.htaccess”)。这些动态配置文件增加了复杂性,通常是导致意外行为的原因,难以调试,它们确实降低了http服务器的速度,通常是免费的,而且它们可以打开安全噩梦的通道。它们仅在您无法访问真正的http服务器主机配置的情况下提供(请阅读:非常便宜的服务提供商)。

请阅读您使用的工具文档。
RewriteRule
命令在路径而不是url上运行。所以,如果您的模式以“域名”开头,它将永远不会匹配。@arkascha我更改为路径,但它仍然不起作用。我把问题编辑成你说的那样。谢谢你的回答。1-关于你的评论,我目前正在使用共享主机,主机提供商不允许我使用httpd.conf.2-你的代码解决了2个插件的问题,但它也导致所有直接的“addon.com”点击转到primary.com,所以我还添加了“RewriteCond%{HTTP_host}(.*)primary\.com$”.3-关于其他3个插件,它们也有自己的.htaccess,但是它们只有'code'RewriteRule^(js | css)…'code',我红色了[documentation][1],所以我希望它们是独立的,并且都是按顺序工作的,为什么它会在根级别.htaccess中重写独立的RewriteRule?[1] :好的,我在答案中添加了你关于重写cond的建议,形式稍有改动。关于你的评论3:我真的不明白问题是什么。当然,会考虑所有相关的动态配置文件,从
DOCUMENT\u ROOT
文件夹开始迭代,直到与请求路径匹配的文件夹。这就是为什么这些文件会减慢http服务器速度的原因之一。。。规则按发生顺序应用。以后的规则肯定不会“覆盖”以前的规则。但请记住,如果您访问
http://addon1.com/css/file.css
,则不考虑to plevel
.htaccess
文件(您的),因为它不在该主机
文档的根目录中。