используйте .htaccess для перенаправления всех запросов, кроме двух

#.htaccess

#.htaccess

Вопрос:

Я новичок в этом, но у меня есть следующий .htaccess, который работает правильно:

 RewriteEngine on
RewriteCond %{HTTP_HOST} ^site.com$
RewriteRule (.*) http://www.site.com/$1 [R=301,L]
RewriteRule ^$ /wordpress [L,R=301]
  

Это перенаправляет любого на site.com или www.site.com чтобы перейти к www.site.come/wordpress
Однако у меня есть 2 каталога, которые мне нужно игнорировать это правило:
www.site.com/dir1
www.site.com/dir2
и их нужно игнорировать (не переписывать, даже если они приходят без www.)

Редактировать: необходимо игнорировать каталог И файлы в каталоге. итак site.com/dir1 И site.com/dir1/index.php следует оставить оба в покое.

Как я могу это сделать?

Спасибо! Крис

Ответ №1:

Вам просто нужно добавить еще пару условий к вашему первому RewriteRule:

 RewriteEngine on
RewriteCond %{HTTP_HOST} ^site.com$
RewriteCond %{REQUEST_URI} !^/dir1(/|$)
RewriteCond %{REQUEST_URI} !^/dir2(/|$)
RewriteRule (.*) http://www.site.com/$1 [R=301,L]
RewriteRule ^$ /wordpress [L,R=301]
  

(/|$) В конце условий выполняется проверка либо для a / для другого компонента path, либо для завершения запроса ( $ ). Вы могли бы оставить (/|$) выключенным, если вы не разборчивы и готовы игнорировать любой запрос, начинающийся с /dir1 или /dir2 , например /dir1a .

Второму RewriteRule не нужны никакие новые условия, поскольку он соответствует только корню домена ( ^$ ).

Комментарии:

1. Именно то, что мне было нужно, и я ДЕЙСТВИТЕЛЬНО ценю объяснение!