2016-12-13 2 views
0

У меня проблема с файлом .htaccess. Все работало отлично, пока я не сделал некоторые изменения (добавлены обработки нескольких языков):Страница не перенаправляется правильно - .htaccess проблема с файлом

До:

RewriteEngine On 

RewriteBase/
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
RewriteRule ^(index.html)$ http://my-site.pl/ [R=301,L] 

То, что я добавил в конце файла:

RewriteCond %{HTTP:Accept-Language} (pl) [NC] 
RewriteRule .* index.html [R,L] 
RewriteCond %{HTTP:Accept-Language} (en) [NC] 
RewriteRule .* index.en.html [R,L] 
RewriteCond %{HTTP:Accept-Language} (jp) [NC] 
RewriteRule .* index.jp.html [R,L] 

Я хочу перенаправить все страны на свои страницы, меняя только (..) на моей странице url: http://my-site.pl/index.(..).html, как в приведенном выше коде.

Я не могу найти, где проблема.

Ошибка из браузера Firefox:

страница не перенаправлять правильно. Firefox обнаружил, что сервер перенаправляет запрос для этого адреса таким образом, который никогда не будет завершен.

EDIT: После изменения (по-прежнему не работает) полный .htaccess:

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule^http://%1%{REQUEST_URI} [R=301,L,NE] 

RewriteCond %{THE_REQUEST} /index\.html [NC] 
RewriteRule ^index\.html$/[R=301,L,NC] 

RewriteCond %{HTTP:Accept-Language} pl [NC] 
RewriteRule ^(?!index\.html$).+$/[NC,R,L] 

RewriteCond %{HTTP:Accept-Language} en [NC] 
RewriteRule ^/?$ index.en.html [R,L] 

RewriteCond %{HTTP:Accept-Language} jp [NC] 
RewriteRule ^/?$ index.jp.html [R,L] 

ErrorDocument 404 /404.html 

## EXPIRES CACHING ## 
<IfModule mod_expires.c> 
ExpiresActive On 
ExpiresByType image/jpg "access 1 year" 
ExpiresByType image/jpeg "access 1 year" 
ExpiresByType image/gif "access 1 year" 
ExpiresByType image/png "access 1 year" 
ExpiresByType text/css "access 1 month" 
ExpiresByType text/html "access 1 month" 
ExpiresByType application/pdf "access 1 month" 
ExpiresByType text/x-javascript "access 1 month" 
ExpiresByType application/x-shockwave-flash "access 1 month" 
ExpiresByType image/x-icon "access 1 year" 
ExpiresDefault "access 1 month" 
</IfModule> 
## EXPIRES CACHING ## 
<IfModule mod_deflate.c> 
    # Compress HTML, CSS, JavaScript, Text, XML and fonts 
    AddOutputFilterByType DEFLATE application/javascript 
    AddOutputFilterByType DEFLATE application/rss+xml 
    AddOutputFilterByType DEFLATE application/vnd.ms-fontobject 
    AddOutputFilterByType DEFLATE application/x-font 
    AddOutputFilterByType DEFLATE application/x-font-opentype 
    AddOutputFilterByType DEFLATE application/x-font-otf 
    AddOutputFilterByType DEFLATE application/x-font-truetype 
    AddOutputFilterByType DEFLATE application/x-font-ttf 
    AddOutputFilterByType DEFLATE application/x-javascript 
    AddOutputFilterByType DEFLATE application/xhtml+xml 
    AddOutputFilterByType DEFLATE application/xml 
    AddOutputFilterByType DEFLATE font/opentype 
    AddOutputFilterByType DEFLATE font/otf 
    AddOutputFilterByType DEFLATE font/ttf 
    AddOutputFilterByType DEFLATE image/svg+xml 
    AddOutputFilterByType DEFLATE image/x-icon 
    AddOutputFilterByType DEFLATE text/css 
    AddOutputFilterByType DEFLATE text/html 
    AddOutputFilterByType DEFLATE text/javascript 
    AddOutputFilterByType DEFLATE text/plain 
    AddOutputFilterByType DEFLATE text/xml 

    # Remove browser bugs (only needed for really old browsers) 
    BrowserMatch ^Mozilla/4 gzip-only-text/html 
    BrowserMatch ^Mozilla/4\.0[678] no-gzip 
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html 
    Header append Vary User-Agent 
</IfModule> 

ответ

0

Проблема находится в 3-м правиле, которое перенаправляет к index.html и 2-го правила перенаправляет index.html к /, таким образом, вызывая цикл перенаправления ,

Имейте это так:

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule^http://%1%{REQUEST_URI} [R=301,L,NE] 

RewriteCond %{THE_REQUEST} /index\.html [NC] 
RewriteRule ^index\.html$/[R=301,L,NC] 

RewriteCond %{HTTP:Accept-Language} pl [NC] 
RewriteRule ^(?!index\.html$).+$/[NC,R,L] 

RewriteCond %{HTTP:Accept-Language} en [NC] 
RewriteRule ^/?$ index.en.html [R,L] 

RewriteCond %{HTTP:Accept-Language} jp [NC] 
RewriteRule ^/?$ index.jp.html [R,L] 

Убедитесь, чтобы очистить кэш браузера во время тестирования.

+0

К сожалению, все еще не работает ... такая же ошибка ... каждый раз, когда очищенный кеш очищается – Krzysiek

+0

по-прежнему та же ошибка видна. проверен на firefox и в Internet Explorer на мобильном телефоне – Krzysiek

+0

Это что-то не так с правилом перенаправления pl. Без этого все работает, но, к сожалению, все страницы перенаправляются на ru. – Krzysiek

Смежные вопросы