Ошибка .htaccess с помощью RewriteBase

У меня есть файл htaccess, который

  1. Заботится о создании, например, example.com/fr вести себя как example.com/index.php?lang=fr

  2. Обрабатывает блог:

RewriteEngine On

RewriteCond %{ENV:REDIRECT_rewritten} !=1
RewriteCond %{QUERY_STRING} ^lang=([a-z]{2})$ [NC]
RewriteRule ^([^/]*)$ /%1/$1? [R=301,L]

RewriteCond %{REQUEST_URI} !^/js/
RewriteRule ^([a-z]{2})(?:/([^/]+))?$ $2?lang=$1  [NC,L,QSA,E=rewritten:1]

#If the following part is removed, it works fine
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]

Как это исправить?

1

Решение

RewriteBase здесь даже не нужно, потому что это применимо для относительных путей в .htaccess,

Вы должны сохранить эти правила в корне сайта .htaccess:

RewriteEngine On

RewriteCond %{THE_REQUEST} \s/+[^?]*\?lang=([^\s&]+)\s [NC]
RewriteRule ^ /%2/%1? [R=301,L,NE]

RewriteCond %{REQUEST_URI} !^/js/
RewriteRule ^([a-z]{2})(?:/([^/]+))?$ $2?lang=$1  [NC,L,QSA]

И создать blog/.htaccess и держите эти правила в blog/.htaccess:

DirectoryIndex index.php
RewriteEngine On

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector