2017-02-19 6 views
1

У меня есть файл Htaccess, что.htaccess неудачу с RewriteBase

  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] 

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

ответ

0

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] 
Смежные вопросы