【问题标题】:htaccess redirect prefix to a domainhtaccess 将前缀重定向到域
【发布时间】:2018-12-06 22:47:08
【问题描述】:
我做了一个有 2 种语言的网站。每个人都有一个特定的域。我买了它们,它们指向同一个目录(所以它们显示的是同一个站点)。
我很想将每种语言重定向到其特定的域。
我试过了:
RewriteRule ^fr/(.*)$ https://www.french-domain.com/fr/$1 [L,R=301]
RewriteRule ^en/(.*)$ https://www.english-domain.com/en/$1 [L,R=301]
但它会产生循环错误。
有人有想法吗?谢谢。
【问题讨论】:
标签:
.htaccess
web
redirect
【解决方案1】:
您总是在搜索旧 url 和新 url 中都存在的模式,并且由于它们都指向同一个文件夹...您进入无限循环。
如果你有2个域,那么你可以通过域本身检查,
这样:
HTTP_HOST fr.french-domain.com/(.*)
RewriteRule ^fr.french-domain.com/(.*)$ https://www.french-domain.com/fr/$1 [L,R=301]
我不完全了解域名的样子以及重定向到什么,所以也许你需要稍微改变一下。
但是如果它对你有用,试试这个并更新,
【解决方案2】:
您没有使用正确的规则来重定向您的域。您的规则仅重定向以 fr 和 en 开头的 Url 路径,即:example.com/fr。要将域重定向到特定文件夹,首先您需要检查HTTP_HOST 标头,然后将该主机重定向到该文件夹。
在您的域指向的目录/.htaccess 中使用以下规则:
RewriteEngine on
# map fr-example.com to /fr-folder
RewriteCond %{HTTP_HOST} ^(www\.)?fr-example\.com$ [NC]
RewriteRule ^.*$ /fr-folder%{REQUEST_URI} [L]
# map eng-example.com to /eng-folder
RewriteCond %{HTTP_HOST} ^(www\.)?eng-example\.com$ [NC]
RewriteRule ^.*$ /eng-folder%{REQUEST_URI} [L]