.htaccess 如何在不重定向的情况下加载我的子域内容

cyej8jka  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(140)

我有一个子域为我的博客,但我服务两种不同的语言,据我所知,它是好的SEO把每一种语言在一个单独的子域,因为我做了“子子域”
我希望在我的“子子域”内加载我的子域英语内容(不改变URL或重定向它),我认为这将是更容易为我比使另一个副本的文件从我的子域到子子域
这是我的代码,但它不工作,顺便说一句。我使用光速服务器

RewriteEngine On
RewriteCond %{HTTP_HOST} ^en.blog\.example\.com  [NC]
RewriteRule ^(.*)$ https://blog.example.com/en/$1 [L]

我想要这个(en.blog.example.com)加载这个(www.example.com)的内容blog.example.com/en/
以及(en.blog.example.com/backlinks)加载此(www.example.com)的内容blog.example.com/en/backlinks等
问候

j91ykkif

j91ykkif1#

假设语言子域指向与父主机名(即blog.example.com)那么...

RewriteCond %{HTTP_HOST} ^en.blog\.example\.com  [NC]
RewriteRule ^(.*)$ https://blog.example.com/en/$1 [L]

通过指定绝对URL(即在 substitution 字符串中使用scheme + hostname),这将隐式地触发302(临时)重定向,并且URL将改变。
你需要一个内部重写。但是您还需要避免重写已经用于语言子目录的URL。例如:

RewriteCond %{HTTP_HOST} ^en.blog\.example\.com [NC]
RewriteRule !^en(/|$) en%{REQUEST_URI} [L]

RewriteRule * 模式 * 首先检查URL路径是否已经是/en(或者没有开始/en/),如果请求是针对en子域的,则将请求重写到/en子目录。
但是,您仍然需要防止用户从en子域访问/en子目录等。

相关问题