2012-05-11 7 views
0

現在、次のコードを.htaccessに追加しました。このコードは、ブラウザの言語を検出し、これが正常に動作しますRewriteCond HTTP:Accept-Languageすべてのサブフォルダ

RewriteEngine On 
RewriteCond %{HTTP:Accept-Language} ^(es.*) [NC] 
RewriteCond %{REQUEST_URI} !(^/images/.*) 
RewriteCond %{REQUEST_URI} !(^/es/.*) [NC] 
RewriteRule ^(.*)$ /es/$1 [L,R=301] 

、彼らが自動的に送信されているスペイン語の訪問mysite.comを持つユーザーはmysite.com/es/する/ ES/

するときにスペイン語の訪問者を転送し、サブフォルダでは動作しません。たとえば、同じユーザーがmysite.com/page/にアクセスした場合、mysite.com/es/page/に送信されません。

すべてのサブフォルダで動作するようにコードを変更するにはどうすればよいですか?

あなたは自動的にこのようなものはありませんけれどもwww.site.com/page/test/にリダイレクトされますsite.com/page/test/あなたが訪問する場合は、WWWは

rewriteCond %{HTTP_HOST} !site.com 
rewriteRule ^(.*)$ site.com/$1 [R=301,L] 

をリダイレクトすると、それは可能であると同様言語ではwww.site.com/page/test/からwww.site.com/es/page/test/に移動しないようです。

答えて

0

コンテンツがあるサブフォルダがあるようなレイアウトの場合、 Webアプリケーションの場合は、各サブフォルダに.htaccessファイルが必要です。 esディレクトリに置かれた同じファイルはそのトリックを行うべきです。

スペイン語スペイン語とペルー語スペイン語を区別する場合、es-ESとes-PEを試すことができます。

+0

ありがとうございます。 1000以上のサブフォルダ(各ページ/投稿)を持つブログでは、不可能な作業になります。 – Lisa

+0

その場合、httpd.confや/ etc/apache2/sites-available/defaultのようなメインのApache設定ファイルにこれらのルールを入れてみてください。 – Ansari

+0

ルートアクセスなしでこれを行う方法はありますか?私は、.htaccessでRewriteCond%{HTTP:Accept-Language}と言い、ルートとすべてのサブフォルダをルートとすべてのサブフォルダに伝えることができると期待しました。 site /にアクセスした場合、wwwのリダイレクトは可能ですか? rewriteCond%{HTTP_HOST}!site.com rewriteRule ^(。*)$ http://www.site.com/$1 [R = 301、L] page/test /あなたは自動的にwww.site.com/page/test/にリダイレクトされます。しかし、このようなものはwww.site.com/page/test/からwww.site.comに行くための言語では機能しません。/es/page/test/ – Lisa

関連する問題