2017-09-15 63 views
0

我需要用URI中的特定關鍵字重新定向每個請求,只需將這個關鍵字替換爲另一個關鍵字,並將剩餘的關鍵字留在Apache Web服務器上。.htaccess:RedirectMatch與RewriteCond

但有此行爲的一個例外: 如果另一個關鍵詞是,除了第一關鍵字,URI的一部分,這個重定向頁面應該使用。

實施例:

https://www.domain.tld/projects/myFirstProject 

應重定向到

https://www.domain.tld/references/myFirstProject 

但如果關鍵字「項目」似乎是在「類別」的子目錄,該請求不應該被重定向:

https://www.domain.tld/category/projects 

這是我得到的RewriteMatch,它爲重定向,但不能與「類別」處理異常:

RedirectMatch 301 /projects(.*) /references$1 

注:被替換的URI比其他關鍵詞的部分不應該被改變!

如何添加正確的RewriteCond?我是否必須用RewriteCond,RewriteRule解決方案重寫RedirectMatch?這個解決方案將如何?

謝謝!

回答

1

所以,如果你只想要重定向的URL以projects開始,你可以這樣做:

RewriteEngine On 
RewriteRule ^projects(/.+|$) /references$1 [L,R=301,QSA] 

演示:

編輯

或者,如果你想擁有此項工作的任何地方,除非category出現projects在URL之前,你可以做到這一點,像這樣:

RewriteEngine On 
RewriteCond %{REQUEST_URI} !category/(.*)projects 
RewriteRule (^|/)projects(/.+|$) /references$2 [L,R=301,QSA] 

RewriteCond確保RewriteRule僅適用,如果網址不包含category,然後是projects