Apache 从子文件夹托管主域

Apache 从子文件夹托管主域,apache,.htaccess,sysadmin,shared-hosting,cpanel,Apache,.htaccess,Sysadmin,Shared Hosting,Cpanel,我有一个问题,使一个子目录作为我的主域的公共html,并获得一个解决方案,该领域的子目录也工作 背景 我的主机允许我托管多个站点,它们都工作得很好。我已经在我的~/public\u html/目录下设置了一个子文件夹,名为/domains/,在那里我为每个单独的网站创建了一个文件夹。我的服务器上的文件夹结构如下所示: 公共网页 领域 网站 网站二 网站三 这使我的网站保持整洁。唯一的问题是让我的“主域”适应这个系统。似乎我的主域以某种方式与我的帐户(或Apache或其他东西)绑定,

我有一个问题,使一个子目录作为我的主域的公共html,并获得一个解决方案,该领域的子目录也工作

背景 我的主机允许我托管多个站点,它们都工作得很好。我已经在我的~/public\u html/目录下设置了一个子文件夹,名为/domains/,在那里我为每个单独的网站创建了一个文件夹。我的服务器上的文件夹结构如下所示:

  • 公共网页
    • 领域
      • 网站
      • 网站二
      • 网站三
这使我的网站保持整洁。唯一的问题是让我的“主域”适应这个系统。似乎我的主域以某种方式与我的帐户(或Apache或其他东西)绑定,因此我无法更改此域的“文档根”。我可以为我添加到cPanel中的任何其他域(“附加域”)定义文档根,这没有问题。但主要领域是不同的

问题 我被告知编辑.htaccess文件,将主域重定向到子目录。这似乎效果很好,我的网站在主页/索引页上运行良好

我遇到的问题是,如果我尝试在浏览器中导航到主站点的images文件夹(仅举个例子),如下所示:

www.yourmaindomain.com/images/

然后它似乎忽略了重定向,并在url中显示了整个服务器目录,如下所示:

www.yourmaindomain.com/domains/yourmaindomain/images/

它实际上仍然显示了正确的“Index of/images”页面,并显示了我所有图像的列表。问题在于“漂亮”的URL

my.htaccess的示例
这个htaccess文件看起来正确吗?我只需要使我的主域的行为像一个附加域,并且它的子目录遵循重定向规则。

不要使用mod_rewrite,使用它。我不会在这里详细解释,您可以在上面的链接中找到所有必要的信息。(提示:您可能需要基于名称的。)

你可能想把你的东西从
~/public\u html/
移到一些更通用的地方,比如
/var/www/
/srv/www


除此之外:。

我用和你一样的方式组织它。我的主域名也有同样的问题。 这个.htaccess对我有效,甚至解决了丑陋的URL问题

# .htaccess main domain to subdirectory redirect 

RewriteEngine on 
# Change example.com to be your main domain. 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
# Change 'subdirectory' to be the directory you will use for your main domain. 
RewriteCond %{REQUEST_URI} !^/subdirectory/ 
# Don't change the following two lines. 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
# Change 'subdirectory' to be the directory you will use for your main domain. 
RewriteRule ^(.*)$ /subdirectory/$1 
# Change example.com to be your main domain again. 
# Change 'subdirectory' to be the directory you will use for your main domain 
# followed by / then the main file for your site, index.php, index.html, etc. 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteRule ^(/)?$ subdirectory/ [L]

可能应该移动到serverfault。您是否最终使用虚拟主机解决了此问题(按照已接受的解决方案)?我有完全相同的问题,但无法在共享主机上使用虚拟主机-因此,不幸的是,该解决方案实际上并不能解决我的问题。共享主机上是否可以使用虚拟主机?这取决于您的共享主机设置,您应该问您的提供商。@Marco:我只是想说,如果他需要使用它们,他就需要使用它们。正如我链接到的页面上的第一句话所说,“一般来说,除非您无法访问主服务器配置文件,否则您不应该使用.htaccess文件。”我有同样的问题,但不能在共享主机上使用虚拟主机。我真的希望有一个基于mod_重写的解决方案。。。
# .htaccess main domain to subdirectory redirect 

RewriteEngine on 
# Change example.com to be your main domain. 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
# Change 'subdirectory' to be the directory you will use for your main domain. 
RewriteCond %{REQUEST_URI} !^/subdirectory/ 
# Don't change the following two lines. 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
# Change 'subdirectory' to be the directory you will use for your main domain. 
RewriteRule ^(.*)$ /subdirectory/$1 
# Change example.com to be your main domain again. 
# Change 'subdirectory' to be the directory you will use for your main domain 
# followed by / then the main file for your site, index.php, index.html, etc. 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteRule ^(/)?$ subdirectory/ [L]