Перенаправление htaccess для всех, кроме файлов / каталогов

Я пытаюсь создать правило перезаписи, которое выполняет две вещи:

  1. переадресовывать (www.)?domain.com в log.domain.com
  2. Пусть любой другой каталог или файл запроса на domain.com без перенаправления

Это не сервер Apache (это LiteSpeed), но предположительно он поддерживает .htaccess файлы полностью.

Это был мой шанс на правило:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$
RewriteRule .* http://log.domain.com/

Происходит следующее: если я запрашиваю определенный файл (например, dir / index.php), он пропускается, но запросы каталога по-прежнему перенаправляются на log.domain.com. Я думал $ второй RewriteCond будет препятствовать этому, но, похоже, это не так.

РЕДАКТИРОВАТЬ: Просто для архивных целей я не хотел перенаправлять какие-либо несуществующие каталоги / файлы на log.domain.com, так как пользователи никогда не должны делать это. Это значительно упростило критерии для правила, к которому пришли хаос и Гамбо со своими первыми правилами, приведенными ниже. Еще раз спасибо!

2 ответа

Решение
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$
RewriteRule ^$ http://log.domain.com/

Попробуй это:

# skip the next rule if host is not example.com or www.example.com
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$
RewriteRule ^ - [S]

# redirect if requested URI does not match a regular file or directory
# or if the requested URI path is just "/"
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteCond %{REQUEST_URI} =/
RewriteRule ^ http://log.example.com/
Другие вопросы по тегам