2016-04-08 31 views
0

我最近将几个域移动到GoDaddy,并且目前正在努力获取正确设置每个域的目录结构。我的每个插件域都位于public_html /下的自己的目录中。此外,我想将我的主域名移动到其自己的子文件夹中进行清洁。其结果是,我的目录设置是这样的:使用CPanel将域移动到子目录

public_html/ 
    primarydomain/ 
    addondomainA/ 
    addondomainB/ 
    addondomainC/ 

设置我的.htaccess文件public_html下如下:

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

你可以尝试使用一个cname回到正确的目录(在cPanel的高级dns中的cname)

相关问题