从子文件夹托管主域

从子文件夹托管主域

我在使子目录充当我的主域的 public_html 时遇到问题,并且无法获得适用于该域子目录的解决方案。

我的主机允许我托管多个网站,这些网站都运行良好。我在我的〜/ public_html /目录名为/域名/,我为每个单独的网站创建一个文件夹。例如

  • 公共的html
      • 网站一
      • 网站二
      • 网站三
      • ...

这使我的网站保持整洁。唯一的问题是让我的“主域”适应这个系统。似乎我的主域以某种方式与我的帐户(或 Apache 等)绑定,所以我无法更改此域的“文档根”。我可以毫无问题地为我在 cPanel 中添加的任何其他域(“附加域”)定义文档根。但主域是不同的。

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

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

www.yourmaindomain.com/images/

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

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

它实际上仍然显示正确的“/images 索引”页面,并显示我的所有图像的列表。

下面是我正在使用的 .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 文件看起来正确吗?我只需要使我的主域表现得像一个附加域,并且它的子目录遵守重定向规则。

答案1

我会称其DirectorySlash为流氓。

  1. 它只发生在目录中吗?
  2. 是否仅在没有尾随斜杠时才会发生这种情况(即/images转到/domain/yourdomain/images/,但/images/没问题)?

在这种情况下,有 3 个选项:

  1. 确保所有链接都有尾部斜杠(/
  2. 设置DirectorySlash off(将使您进入双重页面/目录,从 SEO 的角度来看这不是一个好主意)。
  3. RewriteRule尝试在最后一个之前添加 a index.html:(临时想到的,不知道是否会起作用)

    RewriteCond %{REQUEST_FILENAME} -d  
    RewriteCond %{REQUEST_FILENAME} !/$  
    RewriteRule ^(.*) $1/  
    

答案2

你的问题之一是你的正则表达式:你是不是转义您的点。这意味着它将被视为“任何字符”,而不仅仅是一个点。而不是

^(www.)?domain.tld$

你需要

^(www\.)?domain\.tld$

相关内容