Перенаправление htaccess для всех, кроме файлов / каталогов
Я пытаюсь создать правило перезаписи, которое выполняет две вещи:
- переадресовывать
(www.)?domain.com
вlog.domain.com
- Пусть любой другой каталог или файл запроса на 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/