使用CPanel将域移动到子目录

时间:2016-04-08 04:46:12

标签: apache .htaccess redirect rewrite cpanel

我最近将我的几个域名移到了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子句,希望在插入文件夹时捕获文件夹名称,但它会导致重定向循环,就好像它不按顺序处理命令一样。我已经吞噬了我在堆栈溢出时可以找到的所有答案,但没有一个能解决问题。我尝试过多个新浏览器,我很确定这不是缓存问题。

有没有人有任何想法如何完成这个看似超级基本的任务?有什么我忽略的吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

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