web-dev-qa-db-ja.com

.htaccess言語によるSEOフレンドリーなURLリダイレクト

。htaccessファイルをセットアップして複数の言語を検出し、それらを特定のSEOフレンドリーなURLにリダイレクトするにはどうすればよいですか?

基本的に、すべてのURLはindex.php?lang=(...)に移動する必要があります。

したがって、英語言語検出http://mysite.comhttp://mysite.com/en/index.php?lang=en)に移動する必要があります。

私の。htaccess現在(動作していない):

RewriteEngine On

RewriteCond %{HTTP:Host} http://mysite.com/

RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ http://mysite.com/en/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ http://mysite.com/de/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^nl [NC]
RewriteRule ^$ http://mysite.com/nl/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ http://mysite.com/fr/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^$ http://mysite.com/es/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(en|de|nl|fr|es)$ index.php?lang=$1 [L,QSA]
2
jlmmns

あなたはほとんどそこにいます。最初のRewriteCondをドロップし(必須ではなく、これまでに一致しないため)、最後のRewriteRuleにリダイレクトするため、末尾の/を追加します。

RewriteEngine On

RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ http://mysite.com/en/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ http://mysite.com/de/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^nl [NC]
RewriteRule ^$ http://mysite.com/nl/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ http://mysite.com/fr/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^$ http://mysite.com/es/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(en|de|nl|fr|es)/?$ index.php?lang=$1 [QSA,NC,L]
7
Ravi Thapliyal

言語と国のパラメーターのコードを次に示します。これはすべての言語をサポートします:

#www.country.com/index.html  becomes www.country.com/index.php
#www.country.com/fr/index.html  becomes www.country.com/index.php?language=fr
#www.country.com/ca/fr/index.html  becomes www.country.com/index.php?country=ca&language=fr

RewriteRule ^([a-zA-Z]{2})/([a-zA-Z]{2,3})/index\.html$ index.html?country=$1&language=$2
RewriteRule ^([a-zA-Z]{2,3})/index\.html$ index.html?language=$1
RewriteRule ^index\.html$ /index.php [L]
0