我正在处理多语言网页,但子网域存在一个问题。
我想使用网址en.example.com
,我希望从example.com/index.php中读取所有内容(并设置图片,CSS-root作为example.com)但是在浏览器中我还想要网址{{1并且所有数据都是从example.com读取的,不能设置或更改图像的任何相对路径,包括,CSS ...因为现在我有一个URL用于更多语言(在会话和cookie中设置),这不是很好的解决方案对于谷歌。我希望通过对代码的最小影响来改变它。
罗马
添加:
我试试
en.example.com
但是此代码更改了网址。
谢谢你的帮助
答案 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