我在将子目录用作我的主域的 public_html 时遇到问题,并且获得了一个也适用于该域子目录的解决方案。

背景

我的托管允许我托管多个站点,这些站点都运行良好。我已经在我的 ~/public_html/ 目录下设置了一个名为 /domains/ 的子文件夹,我在其中为每个单独的网站创建一个文件夹。我服务器上的文件夹结构如下所示:

  • public_html

  • 网站one
  • 网站二
  • 网站三
  • ...

  • 这使我的网站保持整洁。唯一的问题是让我的“主域”适合这个系统。似乎我的主域以某种方式与我的帐户(或 Apache 或其他东西)相关联,因此我无法更改此域的“文档根目录”。我可以为我在 cPanel 中添加的任何其他域(“附加域”)定义文档根,没问题。但是主域不同。

    问题

    我被告知要编辑 .htaccess 文件,将主域重定向到子目录。这似乎工作得很好,我的网站在它的主页/索引页面上运行良好。

    我遇到的问题是,如果我尝试导航浏览器以说出我的主站点的图像文件夹(例如),如下所示:



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



    它实际上仍然显示正确的“/图像索引”页面,并显示我所有图像的列表。问题只是“漂亮”的 URL。

    我的 .htaccess 示例
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
    RewriteCond %{REQUEST_URI} !^/domains/yourmaindomain/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /domains/yourmaindomain/$1
    
    RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
    RewriteRule ^(/)?$ domains/yourmaindomain/index.html [L]
    

    这个 htaccess 文件看起来正确吗?我只需要让我的主域表现得像一个附加域,并且它的子目录遵守重定向规则。

    最佳答案

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

    你可能想把你的东西从 ~/public_html/ 移到更通用的地方,比如 /var/www//srv/www

    除此之外: Don't use .htaccess files on production

    关于apache - 从子文件夹托管主域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2992901/

    10-13 00:29