私のウェブサイトで、イタリア語を話す訪問者 (言語ブラウザーはイタリア語) を /it/ にリダイレクトし、他のすべての言語を /en/ にリダイレクトしたいと考えています。
私は次のコードを思いつきます:
#redirect to /it for italian lang
RewriteCond %{HTTP_HOST} ^domain\.net$ [NC]
RewriteCond %{REQUEST_URI} !/it/ [NC] #doesn't have /it in the url already
RewriteCond %{REQUEST_URI} !/en/ [NC] #doesn't have /en in the url already
RewriteCond %{REQUEST_URI} !/admin/ [NC] #we are not in the admin panel
RewriteCond %{HTTP:Accept-Language} ^it [NC] #browser language is italian
RewriteRule ^(.*)$ http://domain.net/it/$1 [L,R=301]
#redirect to /en for all other langs
RewriteCond %{HTTP_HOST} ^domain\.net$ [NC]
RewriteCond %{REQUEST_URI} !/it/ [NC] #doesn't have /it in the url already
RewriteCond %{REQUEST_URI} !/en/ [NC] #doesn't have /en in the url already
RewriteCond %{REQUEST_URI} !/admin/ [NC] #we are not in the admin panel
RewriteRule ^(.*)$ http://domain.net/en/$1 [L,R=301]
このようにしてすべての条件がチェックされ、言語がイタリア語の場合は /it にリダイレクトされます。それ以外の場合は 2 番目のブロックが実行され、英語版にリダイレクトされます。
私の最初の質問は、これを行うためのより効率的な方法はありますか? 私のhtaccess機能は非常に限られています。
追加の質問として: これは SEO で問題を引き起こす可能性がありますか? domain.net をクロールするボットはすべて英語版にリダイレクトされ、イタリア語版へのリンク (旗の画像) を見つけて、イタリア語版もクロールすると思います。それが正しいか?