我最近将我的几个域名移到了GoDaddy,目前我正在努力为每个域名设置正确的目录结构。我将每个插件域放在public_html /下的自己的目录中。此外,我想将我的主域名移动到自己的子文件夹中以保持清洁。因此,我的目录设置如下所示:
public_html/
primarydomain/
addondomainA/
addondomainB/
addondomainC/
我在public_html下设置我的.htaccess文件,如下所示:
RewriteEngine on
# Rewrite direct addondomain access to their proper domains
RedirectMatch ^/addondomainA.com/(.*)$ http://addondomainA.com/$1
RedirectMatch ^/addondomainB.com/(.*)$ http://addondomainB.com/$1
RedirectMatch ^/addondomainC.com/(.*)$ http://addondomainC.com/$1
# Rewrite primary domain access to the primarydomain/ folder
RewriteCond %{HTTP_HOST} ^(www.)?primarydomain.com/
RewriteCond %{REQUEST_URI} !^/primarydomain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /primarydomain/$1
RewriteCond %{HTTP_HOST} ^(www.)?primarydomain.com$
RewriteRule ^(/)?$ primarydomain/index.html [L]
插件域重定向工作完美,如果我尝试访问primarydomain.com,请求会正确地重写到primarydomain /子目录。但是,如果我尝试访问primarydomain.com/primarydomain,则不会重写任何内容(据我所知),用户可以直接访问该页面。我想禁止对primarydomain /文件夹的所有直接访问请求,但我尝试的任何东西似乎都没有用。我想删除:
RewriteCond %{REQUEST_URI} !^/primarydomain/
会做某事,但似乎对行为没有影响。同样,两者:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
...如果删除似乎没有效果。我甚至尝试在顶部添加第四个RedirectMatch子句,希望在插入文件夹时捕获文件夹名称,但它会导致重定向循环,就好像它不按顺序处理命令一样。我已经吞噬了我在堆栈溢出时可以找到的所有答案,但没有一个能解决问题。我尝试过多个新浏览器,我很确定这不是缓存问题。
有没有人有任何想法如何完成这个看似超级基本的任务?有什么我忽略的吗?提前谢谢。
答案 0 :(得分:0)
你可以尝试使用cname回到正确的目录(cPanel中高级dns中的cname)