原有域名文件在 下/home/account/public_html
,附加域名在/home/account/add-on-domain
。
两个站点都有一个.htaccess
文件,除了域名之外,其他都相同,都在主目录中。
主域名:
Options +SymLinksIfOwnerMatch -FollowSymLinks -Indexes
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain1.com [NC]
RewriteRule ^(.*)$ http://www.domain1.com/$1 [L,R=301]
添加域名:
Options +SymLinksIfOwnerMatch -FollowSymLinks -Indexes
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain2.co.uk [NC]
RewriteRule ^(.*)$ http://www.domain2.co.uk/$1 [L,R=301]
中还有更多内容.htaccess
,但附加组件根本无法读取。
Allowoverrides All
在主域上添加会导致其崩溃,在添加域上不执行任何操作。
答案1
Options +SymLinksIfOwnerMatch -FollowSymLinks -Indexes
尝试将 AddOn 域设置FollowSymLinks
为 而不是SymLinksIfOwnerMatch
。例如:
Options +FollowSymLinks -Indexes
更新:
Allowoverrides All
在主域上添加会导致其崩溃,在添加域上不执行任何操作。
这似乎意味着.htaccess
插件域未启用覆盖,或者插件域指向的文件系统路径未启用覆盖。不幸的是,这需要访问服务器配置才能解决 - 您似乎无权访问。
您需要AllowOverride All
向插件域的容器添加<VirtualHost>
内容,以覆盖插件域指向的目录。例如:
<Directory /home/account/add-on-domain>
# Permit "All" .htaccess overrides for this directory tree
AllowOverride All
</Directory>
(当您在 cPanel 中创建附加域时,它应该已经为您执行此操作。)
子域/附加域是否放错了位置?
不,不一定。这取决于你具体在做什么。如果附加域要与主域完全分开,那么最好这样做。
例如它应该在 public_html 下吗?
这应该没什么关系。但是,如果您将附加域指向主域之外的子目录,那么.htaccess
主域的文档根目录中的内容也会影响附加域。为了将它们分开,您需要将主域的内容移动到另一个子目录中,并将请求从文档根目录重写到此子目录(这些只是在您无权访问服务器配置时的解决方法)。
但是,这意味着.htaccess
将为插件域启用覆盖,因为它们已为父目录启用。因此,除非服务器配置中的某些内容明确阻止此操作,否则也将为所有子目录启用覆盖。