前来有很多帮助我把这段代码放在一起,并为我的插件域添加了排除。这些是单独的域,其自己的文件夹位于public_html中。服务器将它们视为子域。如果没有排除,则所有网址都会重定向到主域。所以一切都很好。但现在我进入域名业务并需要托管许多域名。每次添加域名时,我都必须进入主站点htaccess并将其添加到代码中以进行排除。这是一种痛苦。反正有没有重写这段代码所以它会自动执行,所以我不必输入每个新域名?
代码目前剥离index.html / php并重写到文件夹。当没有人时,强制www。
所以root(/)是maindomain。和/ addondomain是插件域的位置。
感谢您的帮助
# 301 permanent redirect index.html(htm) to folder with exclusion for addon domains
RewriteCond %{HTTP_HOST} !(addondomain\.com)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.html?\ HTTP/
RewriteRule ^(([^/]+/)*)index\.html?$ http://www.maindomain.com/$1 [R=301,L]
# 301 permanent redirect non-www (non-canonical) to www with exclusion for addon domains
RewriteCond %{HTTP_HOST} !(addondomain\.com)
RewriteCond %{HTTP_HOST} !^(www\.maindomain\.com)?$
RewriteRule (.*) http://www.maindomain.com/$1 [R=301,L]
答案 0 :(得分:0)
如果我理解正确,为什么不反其道而行之?
确保规则仅适用于(www.)maindomain.com
。就像这样:
# Place this rule first.
# Instead of excluding, add *www* only to main domain when necessary:
RewriteCond %{HTTP_HOST} ^maindomain\.com [NC]
RewriteRule ^(.*) http://www.maindomain.com/$1 [R=301,L]
# Instead of excluding, use the rule only for main domain:
RewriteCond %{HTTP_HOST} ^www\.maindomain\.com [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.html?\ HTTP/
RewriteRule ^(([^/]+/)*)index\.html?$ /$1 [R=301,L]
此规则集应放在主域的根目录下的.htaccess文件中。
我没有测试或修改规则,也不能说它们是否按预期工作,只是在每个规则中替换了1个条件。