【问题标题】:Htaccess load content from folder outside root directoryHtaccess 从根目录外的文件夹加载内容
【发布时间】:2017-06-29 20:08:24
【问题描述】:

我有带有虚拟主机的网站“firstdomain.com”。然后我有没有托管的“secondomain.com”域。我想将内容从位于“firstdomain.com”虚拟主机的文件夹中加载到“seconddomain.com”中。但是此文件夹位于 .htaccess 所在的根文件夹之外。虚拟主机位于“var/www/vhosts/httpdocs/firstdomain.com/httpdocs”,第二个展示的文件夹位于“var/www/vhosts/httpdocs/firstdomain.com/seconddomain”。

仅当两个演示文稿位于同一根文件夹中时,这段代码才有效。这意味着第二个演示文稿位于文件夹“var/www/vhosts/httpdocs/firstdomain.com/httpdocs/seconddomain”中。但出于安全考虑(黑客攻击等),我不想将两个演示文稿都放在同一个根文件夹中。我将 Plesk 虚拟服务器与 Apache 一起使用。你能告诉我如何修改这部分代码以将内容加载到根文件夹之外的正确方法吗?

RewriteCond %{REQUEST_URI} !^/secondomain/
RewriteCond %{HTTP_HOST} secondomain\.com
RewriteRule ^(.*)$ /seconddomain/$1 [L]

【问题讨论】:

  • 抱歉,不清楚您的实际情况如何。 “没有托管”是什么意思?您的 http 服务器设置是否完全响应“seconddomain.com”?地址解析设置是否正确?如果没有,那么你可以做任何你能想象的重写,它不会有帮助。
  • 这意味着“firstdomain.com”是带有托管的域。 “Seconddomain.com”是域设置为“firstdomain.com”的别名并从“firstdomain.com”文件夹加载内容。当此文件夹位于“var/www/vhosts/httpdocs/firstdomain.com/httpdocs/seconddomain”中时,一切正常。我的问题是我需要在根文件夹之外找到这个包含次要内容的文件夹。
  • 好吧,您可以使用Alias 指令在某个路径下发布您想要的任何文件夹,然后使用重写规则将请求重定向到第二个主机名到该虚拟路径(该文件夹已下发表)。这不可能使用动态配置文件(.htaccess),原因很明显,但仅限于真正的 http 服务器主机配置。

标签: .htaccess mod-rewrite url-rewriting directory root


【解决方案1】:

您可以在规则中使用完整路径:

RewriteCond %{HTTP_HOST} seconddomain\.com
RewriteRule ^(.*)$ /var/www/vhosts/httpdocs/firstdomain.com/seconddomain/$1 [L]

但您还需要在 Directory 块中授予 Apache 访问文档根目录外文件夹的权限。这不是通常的方法。你不能再设置一个VirtualHost吗?

【讨论】:

    猜你喜欢
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 2021-12-24
    相关资源
    最近更新 更多