我需要将多语言网站重定向到新域名,并使用.htaccess文件。我将所有旧页面重定向到新域上各自的新页面。
旧网址
Englisch
Main page: www.olddomain.com
Sub pages: www.olddomain.com/bike-rental
Spanish
Main: www.olddomain.com/?lang=es
Sub pages: www.olddomain.com/bike-rental?lang=es
German
Main: www.olddomain.com/?lang=de
Sub pages: www.olddomain.com/bike-rental?lang=de
新网址
Englisch
Main page: www.new-domain.com
Sub pages: www.new-domain.com/bike-rental
Spanish
Main: www.new-domain.com/es
Sub pages: www.new-domain.com/es/alquiler-de-bicis
German
Main: www.new-domain.com/de
Sub pages: www.new-domain.com/de/fahrradvermietung
我意识到它不适用于.htaacces文件中的正常重定向 如:
Redirect 301 /?lang=de http://www.new-domain.com/de/
Redirect 301 /bike-rental?lang=de http://www.new-domain.com/de/fahrradvermietung
如何将这些旧网址重定向到新网址?
由于
答案 0 :(得分:0)
自从php 5.3.0添加了这个变量:
$locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
echo $locale; // returns "en_US"
$localeshort = substr($locale, -2);
echo $localeshort; // returns "US"
如果您使用此功能,则可以使用以下内容进行重定向:
Header("Location: index.php?lang=".$localeshort);
答案 1 :(得分:0)
答案 2 :(得分:0)
请参阅我之前的消息: 自从php添加了这个功能:
$locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
echo $locale; // returns "en_US"
$localeshort = substr($locale, -2);
echo $localeshort; // returns "US"
在.htacces中使用
RewriteEngine on
RewriteRule ^(.*)$ /index.php [R=permanent,L]
现在它将被重定向到开头的页面。 这是我所知道的唯一解决方案。
答案 3 :(得分:0)
您可以在htaccess中执行以下操作:
RewriteCond %{REQUEST_URI} !^/bike-rental$
RewriteCond %{QUERY_STRING} ^lang=(.*)$
RewriteRule ^(.*)/ /bike-rental?lang=%1 [L,R=301]
(测试并添加条件以避免循环重写)