使用 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的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 重定向而不更改地址栏

.htaccess - 将子域重定向到文件夹

.htaccess:重定向而不更改 url

.htaccess 将域重定向到子目录而不更改 URL

htaccess中的子域重定向[关闭]

.htaccess 重定向到子域