使用.htaccess更改共享服务器中的文档根文件夹

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用.htaccess更改共享服务器中的文档根文件夹相关的知识,希望对你有一定的参考价值。

我是apache服务器的管理员(在允许我托管多个域的托管包上),我在public_html中有一个域(让我们称之为www.ROOTwebsite.com)和托管在一个文件夹中的9个其他域与public_html相同的目录级别,称为DOMAINS

所以结构是:

-DOMAINS/site1.com/
        /site2.com/ ... etc
-public_html

我在'/'的wamp(例如/menu.php)的所有相对路径的开头使用site1.com并且它工作正常,但是当我上传到DOMAINS / site1.com /它弄乱了网站,因为它显然在寻找在public_html目录中作为ROOT。

我在.htaccess文件中使用了以下许多组合,但是我无法弄清楚将ROOT更改为NEXT到public_html的目录的正确语法,而不是像往常一样:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.ROOTwebsite.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^ROOTwebsite.gr$
RewriteCond %{REQUEST_URI} !DOMAINS/site1.com/
RewriteRule (.*) /DOMAINS/site1.com/$1 [L]

我希望更改site1.com的根目录,以便它也可以与'/'一起使用,而不会影响public_html网站。

任何人都可以看到上面的代码的问题?

答案

您无法通过.htaccess重新定义文档根目录。您必须为域创建不同的vhost,然后可以具有单独的文档根。

另一答案

我最接近通过.htaccess重新定义文档根目录如下(不完全是你要问的,因为在我的例子中,site1.com是主文档根目录的子目录,但这可以实现你想要的,警告如下)。

RewriteCond %{HTTP_HOST} ^site1.com$ [NC]
RewriteRule !^site1.com/ /site1.com%{REQUEST_URI} [L,NC]

这将有效地将所有site1.com重定向到site1.com子目录。 [告诫]我唯一无法解决的问题是如何将直接转到子目录的网址(如http://site1.com/site1.com/index.html)重定向到http://site1.com/index.html

以上是关于使用.htaccess更改共享服务器中的文档根文件夹的主要内容,如果未能解决你的问题,请参考以下文章

将域根文件夹更改为子文件夹

根据 .htaccess 中的域/子域更改 DirectoryIndex

如何在服务器的htaccess中更改php版本

使用htaccess从URL中删除公用文件夹

.htaccess 将域重定向到子目录而不更改 URL

.htaccess 500 wamp 中的内部服务器错误