2016-10-12 40 views
1

一個URL我已經重定向,像這樣:的.htaccess重定向到一個使用重寫規則

Redirect 301 /url-1 /url-2 

然而,/url-2匹配像這樣的重寫:

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

這被重定向到/url-1

/url-2?view=url-1 

我怎樣才能得到這個重定向,然後重寫正確?

+0

'/ url-1'應該重定向到'/ url-2',然後'/ url-2'全部重寫。最終的url應該只是'/ url-2' –

回答

0

幾點建議:

  1. 不要mod_rewrite規則
  2. 混合Redirect指令保持重定向重寫規則之前的規則。
  3. 跳過的文件和目錄從最後一條規則

您可以使用這些規則:

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] 

記住這個測試之前,清除瀏覽器緩存。

+0

我的'/ url-1'到'/ url-2'是一個重定向,而不是重寫。我在哪裏放置這個? –

+0

'R = 301'表示它不是重寫的重定向。如果我們使用'R'標誌意味着它是一個重定向。 – anubhava

+0

所以我應該重寫而不是重定向? –