PHP将子域重定向到主域

时间:2017-02-20 16:56:58

标签: php .htaccess root subdomain

我正在处理多语言网页,但子网域存在一个问题。

我想使用网址en.example.com,我希望从example.com/index.php中读取所有内容(并设置图片,CSS-root作为example.com)但是在浏览器中我还想要网址{{1并且所有数据都是从example.com读取的,不能设置或更改图像的任何相对路径,包括,CSS ...因为现在我有一个URL用于更多语言(在会话和cookie中设置),这不是很好的解决方案对于谷歌。我希望通过对代码的最小影响来改变它。

有可能吗?例如htaccess或其他方式?谢谢你的回答。

罗马

添加:

我试试

en.example.com

但是此代码更改了网址。

谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

您可能只想包含来自其他虚拟主机的php文件:

<?php
require '../../example.com/public_html/index.php';
?>

这将允许您想要的内容,但根据您的虚拟主机配置,它并不总是可行的。如果您在同一个DirectAdmin用户下运行所有​​域,则此示例应该有效。

答案 1 :(得分:0)

mod_rewrite有两个方面,即重写和重定向。

  • 当内部更改请求时,它被称为重写,而客户端没有注意到。
  • 当更改请求并通知客户端时,称为重定向,以从其他位置获取资源。

在两种情况下重定向请求

  • RewriteRule附加了R|redirect标记,如

    RewriteRule (.*)$ http://www.example.com/$1 [R=301,L]
    
  • 或当RewriteRule的目标网址是指向其他主机的绝对网址时,例如当请求是en.example.com且目标是

    RewriteRule (.*)$ http://www.example.com/$1 [L]
    

因此,如果您希望在浏览器中保持所请求的URL不变,则不得使用R标志,并且不得更改主机部分。

如果您确实需要映射远程服务器,可以尝试P|proxy标志

    RewriteRule ^(.*)$ http://www.example.com/$1 [P]

为此,必须启用mod_proxy模块。

还要注意性能警告

  

效果警告
  使用此标志会触发mod_proxy的使用,而不会处理持久连接。这意味着如果使用ProxyPass或ProxyPassMatch

进行设置,代理的性能会更好