htaccess重定向除文件/目录之外的所有内容

时间:2009-02-11 15:12:50

标签: .htaccess mod-rewrite redirect litespeed

我正在尝试创建一个重写规则来完成两件事:

  1. (www.)?domain.com重定向到log.domain.com
  2. 让domain.com上的任何其他目录或文件请求无需重定向
  3. 这不是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 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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/