2017-02-19 12 views
0

Если URL содержит слово «блог», то следующий блок должен быть выполнен в .htaccess.htaccess, если URL содержит «блог», а затем выполнить правила

RewriteBase /blog/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /blog/index.php [L] 

Я попытался добавить RewriteCond %{REQUEST_URI} ^/blog на наверху, но это не удается.

PS:

Я добавил

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] 

Что делает это так, когда, например, вы идете к example.com/fr он действует как example.com/index.php?lang=fr (за исключением, если это example.com/js... как написано в правилах)

+0

Перенесите свой последний в '/ blog/.htaccess' (создайте его, если он там уже нет) – anubhava

ответ

1

Нет добавив его вверху. RewriteConds применяется только к следующему RewriteRule. Вы можете сделать это следующим образом:

RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_URI} ^/blog(?:/|$) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /blog/index.php [L] 

Я взял первую RewriteBase линию из, поскольку он применяется только для относительных замен, которые вы не используете здесь.

Похоже, что это настроено на файл .htaccess в вашем каталоге /blog/, и в этом случае то, что я добавил, в любом случае не нужно. Эта первая строка нуждается в изменении, если вы перемещаете ее в корень. Угадайте немного здесь, исходя из вашего другого сообщения вокруг той же проблемы.

+0

Привет, теперь, когда я перехожу к URL-адресу блога, например' example.com/blog/2017/01/18/some -blog-post/', он говорит:« Запрошенный URL /example/blog/index.php не найден на этом сервере ». –

+0

Но он работал раньше с правилом RewriteBase. Проблема в том, что это не очень хорошо работает с другими правилами, которые я добавил, я просто обновил сообщение. –

+0

RewriteBase не вызовет проблем, он просто ничего не делает, поэтому я предложил удалить его. Что такое '/ example/blog /' у вас должен быть другой переписать или что-то еще для этого. – SuperDuperApps