1

次の 2 つのことを実現する書き換えルールを作成しようとしています。

  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 にリダイレクトされます。$2 番目の RewriteCond の がこれを防ぐと思っていましたが、そうではないようです。

編集: アーカイブの目的で、存在しないディレクトリ/ファイルを log.domain.com にリダイレクトすることは意図していません。ユーザーがそうする必要はないからです。これにより、ルールの基準がはるかに単純になり、カオスとガンボの両方が以下の最初のルールで到達しました. 再度、感謝します!

4

2 に答える 2

0

これを試して:

# 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/
于 2009-02-11T16:06:43.673 に答える