2

我有一个 PHP 应用程序,需要将域的文档根设置/(wherever)/app_dir/www为它才能成功运行(遗憾的是,无法更改)。不幸的是,在我的主机上,我无法更改主域的文档根目录mydomain.com(从/public_htmlto/public_html/app_dir/www但我可以编辑子域的文档根目录。

子域存储在 中/public_html/subdomain.domain.com,并将子域的根设置为/public_html/subdomain.domain.com/app_dir/www允许应用程序在 中很好地显示其内容http://subdomain.domain.com/

为了使其内容出现在根域(由于文档根不可编辑,我无法安装它),我正在尝试使用 .htaccess 从子域提供内容而不重定向浏览器,所以www.domain.com将显示www.domain.com在地址栏中,但实际上是在提供内容subdomain.domain.com(同样使用www.domain.com/something从 中拉取subdomain.domain.com/something)。

据我了解, mod_proxy 应该能够做到(并且已安装)。根据对类似查询的其他 SO 答案,这看起来应该是解决方案:

RewriteEngine On
RewriteRule ^(www.)?domain\.com$ http://subdomain.domain.com/$1 [L,P]

我一直在尝试用一个简单的 index.html 虚拟对象代替任何更复杂的东西,但要么我的语法关闭了(我尝试了几种变体,没有快乐,包括没有 P 选项;我不是专家,我的以前的 .htaccess 经验仅限于简单的重写和 301 重定向),我错过了一些非常明显的东西,或者我完全找错了树,因为我只是得到了我在根域中获得的虚拟索引文件位于子域根目录中的同样虚拟的索引文件(如果您转到 ,它会显示得很好subdomain.domain.com,但这不是目的)。

任何帮助将非常感激!

4

1 回答 1

3

这条规则是错误的和错误的,它没有做你认为应该做的事情:

RewriteRule ^(www.)?domain\.com$ http://subdomain.domain.com/$1 [L,P]

记住RewriteRule只匹配REQUEST_URI没有域和查询字符串的部分。

如果启用了 mod_proxy,您可以使用此规则:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC]
RewriteRule ^ http://subdomain.domain.com%{REQUEST_URI} [P,L]

如果由于某种原因没有启用 mod_proxy,请告诉我,我会建议一个替代解决方案。

于 2013-08-28T13:48:31.307 回答