Как написать rewriteCond в .htaccess, чтобы исключить subdir и его subdirs - PullRequest
5 голосов
/ 11 августа 2009

У меня следующая проблема. У меня есть веб-сайт и блог в подкаталоге. Оба они php. У меня есть файл .htaccess в корневой папке и еще один в папке блога. Я не думаю, что это актуально, но сценарий блога - это WordPress.

Я добавил условие в корень .htaccess, чтобы пропустить запросы к блогу,

rewriteCond %{REQUEST_URI} !^/blog.*

Вот как это выглядит. Я удалил остальную часть файла:

Options +FollowSymlinks -MultiViews RewriteEngine on

RewriteBase / RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\.php\ HTTP/

// my added line RewriteCond %{REQUEST_URI} !^/blog.*


RewriteCond %{HTTP_HOST} !^www\. RewriteRule .* http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteRule ^(all)/([^/]+)/?$ story.php?title=$2 [L] RewriteRule ^(all)/?$ ?category=$1 [L]

RewriteRule ^/?$ index.php [L] RewriteRule ^advanced-search/?$ advancedsearch.php [L] ...

У меня проблема связана с запросами в блоге. Например, иногда, если я пытаюсь открыть URL-адрес, он работает нормально, иногда открывается домашняя страница (корневая страница, а не блог). Это кажется очень странным. Я думаю, что это связано с хозяином. Когда хозяин занят, страница блога, которую я запрашиваю, не найдена, поэтому запрос отправляется в корневой каталог .htaccess.

У меня есть 2 вопроса:

  • как написать правило и куда поместите его, чтобы исключить все запросы для / блог будет переписан корнем .htaccess? запросы блога могут выглядеть как http: //test.com/blog, http: //test.com/blog/, http: //test.com/blog/title, http: //test.com/blog/title/, http: //test.com/blog/category/title
  • Кто-нибудь знает, что происходит? Почему, когда я открываю страницу блога, она открывает домашнюю корневую страницу, а если я обновляю страницу, она переходит на страницу публикации блога?

1 Ответ

3 голосов
/ 11 августа 2009

Ознакомьтесь с документацией mod_rewrite , в частности с флагом -d в RewriteCond.

Это должно быть примерно так:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule HERE
...