.htaccess重定向到使用重写规则的网址

时间:2016-10-12 11:28:23

标签: regex apache .htaccess mod-rewrite

我有像这样的重定向:

Redirect 301 /url-1 /url-2

但是,/url-2匹配如下的重写:

RewriteRule ^([^.]+)$ index.php?view=$1 [QSA,L]

这会将/url-1重定向到:

/url-2?view=url-1

如何让它重定向然后正确重写?

1 个答案:

答案 0 :(得分:0)

很少有建议:

  1. 请勿将Redirect指令与mod_rewrite规则
  2. 混合使用
  3. 在重写规则之前保留重定向规则。
  4. 从最后一条规则中删除文件和目录
  5. 您可以使用以下规则:

    RewriteEngine On
    
    RewriteRule ^url-1/? /url-2 [L,NC,R=301]
    
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301,NE]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^.]+?)/?$ index.php?view=$1 [QSA,L]
    

    请在测试前清除浏览器缓存。