使用 htaccess 进行子域重定向,无需更改地址栏中的 URL

Bos*_*ova 3 apache subdomain .htaccess mod-rewrite url-routing

我在我的网络主机上设置了一个子域,如下所示:

en.domain.com     pointing to the folder     /en/
Run Code Online (Sandbox Code Playgroud)

但是当在地址栏中输入“en.domain.com”时,URL变为

domain.com/en/
Run Code Online (Sandbox Code Playgroud)

如果我进一步导航,假设文件夹“aaa”,URL 就会变成

domain.com/en/aaa/
Run Code Online (Sandbox Code Playgroud)

有没有办法让子域名保留在地址栏中,如下所示?:

en.domain.com/aaa/
Run Code Online (Sandbox Code Playgroud)

Bos*_*ova 5

我尝试了一切,但没有人能帮助我。经过大量研究后,我发现了这一点并且它对我有用。所以这是我自己的答案,可能会帮助其他人寻找同样的东西。

这将使显示子域(“en.domain.com”)的 URL 在地址栏中不会更改,即使有人输入“domain.com/en/”,它也会将 URL 重写为“en.domain.com”。 com”:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^domain\.com$
RewriteRule ^en(/(.*))? http://en.domain.com/$2 [QSA,L,R=301]
Run Code Online (Sandbox Code Playgroud)

这将破坏您网站的路径,导致样式和图像不会显示。因此,您需要根据网站结构中每个页面的位置,将其放入网站每个页面的 HTML 代码中:

对于文件夹“en”中的页面:

<head>
<base href="http://domain.com/en/" />
</head>
Run Code Online (Sandbox Code Playgroud)

对于文件夹“aaa”中的页面:

<head>
<base href="http://domain.com/en/aaa/" />
</head>
Run Code Online (Sandbox Code Playgroud)

对于文件夹“bbb”中的页面:

<head>
<base href="http://domain.com/en/aaa/bbb/" />
</head>
Run Code Online (Sandbox Code Playgroud)

不客气!:-)