How do I redirect traffic based on browser language using .htaccess?

You can redirect traffic based on the browser’s language using the `mod_rewrite` module in the `.htaccess` file. Here’s how you can achieve that:

1. Enable mod_rewrite: Ensure that the `mod_rewrite` module is enabled in your Apache server. You can usually do this via your server configuration files.

2. Identify the browser language: The browser sends its preferred languages in the `Accept-Language` header. You can access this information using the `%{HTTP:Accept-Language}` variable in Apache’s mod_rewrite.

3. Redirect based on language: Use mod_rewrite rules to check for specific languages and redirect accordingly. Here’s a basic example:

RewriteEngine On

# Redirect to English version for English-speaking users
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ /en/ [L,R=302]

# Redirect to French version for French-speaking users
RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ /fr/ [L,R=302]

# Redirect to default version for all other languages
RewriteRule ^$ /default/ [L,R=302]

In this example:
– If the preferred language is English (`^en`), it will redirect to `/en/`.
– If the preferred language is French (`^fr`), it will redirect to `/fr/`.
– For any other language, it will redirect to the default version (`/default/`).

4. Specify the target URLs: Replace `/en/`, `/fr/`, and `/default/` with the actual URLs of your English, French, and default versions, respectively.

5. Test the redirection: After adding the rules, test the redirection using browsers with different language settings to ensure it behaves as expected.

Remember to adjust the HTTP status code (e.g., `R=302`) according to your specific needs. In the example above, `R=302` indicates a temporary redirect, which may be suitable for testing purposes, but you may want to change it to `R=301` for permanent redirects once you’re sure about your setup.