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

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

  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 ]

2 голосов
/ 11 февраля 2009
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$
RewriteRule ^$ http://log.domain.com/
0 голосов
/ 11 февраля 2009

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

# 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/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...