htaccess外部重定向不排除URI

时间:2013-05-31 16:21:54

标签: .htaccess mod-rewrite redirect external

我正在尝试从基于htaccess的重定向中排除少量URI

我的htaccess指令如下:

    <IfModule mod_rewrite.c>
      RewriteEngine on    
        #
        RewriteCond %{HTTP_HOST} ^(www\.)?domain1.com$ [NC]
        RewriteRule !=/test$ http://domain2.com [L,R=301,NC]
        #


          RewriteCond %{REQUEST_FILENAME} !-f
          RewriteCond %{REQUEST_FILENAME} !-d
          RewriteCond %{REQUEST_URI} !=/favicon.ico
          RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
   </IfModule>

这有什么不对?有什么建议吗?

我也尝试过不同的方式

<IfModule mod_rewrite.c>
  RewriteEngine on

    RewriteCond %{REQUEST_URI} !=/test
    RewriteRule (.*) http://domain2.com? [R=301,L]

  # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

</IfModule>

在进行外部重定向时,排除URI,测试无效。如果我正在进行内部重写,它的工作正常。

1 个答案:

答案 0 :(得分:1)

也许这有效:

Options +FollowSymlinks

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond %{REQUEST_URI} !/test
# Add next line
RewriteCond %{REQUEST_URI} !index\.php [NC]
RewriteRule (.*) http://domain2.com? [R=301,L]

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>