使用 htaccess 重定向子域而不更改地址栏中的 URL
Posted
技术标签:
【中文标题】使用 htaccess 重定向子域而不更改地址栏中的 URL【英文标题】:Subdomain redirect with htaccess without changing URL in the address bar 【发布时间】:2013-09-20 12:55:05 【问题描述】:我在我的网络主机上设置了一个子域,如下所示:
en.domain.com pointing to the folder /en/
但是当在地址栏输入“en.domain.com”时,URL变成了
domain.com/en/
如果我进一步导航,假设文件夹“aaa”,URL 变成
domain.com/en/aaa/
有没有办法让子域留在地址栏中,像这样?:
en.domain.com/aaa/
【问题讨论】:
你自己试一下,能不能分享你的htaccess
代码,以便我们为你提供帮助
是的。我进行了广泛的搜索并尝试了其他人在 *** 上发布的许多代码,但没有一个完全有效。如我所愿,一个代码设法将子域保留在地址栏中,但图像和样式不再加载,因为它改变了路径。我用这个几乎可以工作的代码更新了我的问题。
【参考方案1】:
我什么都试过了,没人能帮我。经过大量研究,我发现了这一点,它对我有用。所以这是我自己的答案,这可能会帮助其他人搜索相同的东西。
这将使显示子域(“en.domain.com”)的 URL 在地址栏中不会更改,即使有人输入“domain.com/en/”,它也会将 URL 重写为“en .domain.com”:
RewriteEngine On
RewriteCond %HTTP_HOST ^domain\.com$
RewriteRule ^en(/(.*))? http://en.domain.com/$2 [QSA,L,R=301]
这会破坏您网站的路径,导致样式和图片无法显示。因此,您需要根据每个页面在站点结构中的位置,将其放入站点每个页面的 html 代码中:
对于文件夹“en”中的页面:
<head>
<base href="http://domain.com/en/" />
</head>
对于文件夹“aaa”中的页面:
<head>
<base href="http://domain.com/en/aaa/" />
</head>
对于文件夹“bbb”中的页面:
<head>
<base href="http://domain.com/en/aaa/bbb/" />
</head>
不客气! :-)
【讨论】:
以上是关于使用 htaccess 重定向子域而不更改地址栏中的 URL的主要内容,如果未能解决你的问题,请参考以下文章