我有三個場景要滿足
場景是
- 如果
www.example.com然后需要重定向www.example.com/a-a - 如果
www.example.com/pages然后需要重定向www.example.com/a-a/pages - 如果
www.example.com/b-b然后按原樣進行,則無需重定向www.example.com/b-b - 如果
www.example.com/b-b/pages然后按原樣進行,則無需重定向www.example.com/b-b/pages
我的代碼滿足前兩種情況并強制始終相同。我不能帶來不條件。
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/a-a(/.*)?$
RewriteRule ^(.*)$ /a-a/$1 [L,R=301]
RewriteCond %{REQUEST_URI} ^/b-b(/.*)?$
RewriteRule ^(.*)$ [L,R=301] # do nothing here and not to do the previous condition
第二個條件是總是強迫www.example.com/a-a/b-b 我不想要這個。
uj5u.com熱心網友回復:
第二條規則實際上并沒有做任何事情,因為請求/b-b被第一條規則捕獲。(無論如何,第二條規則是無效的,因為您缺少替換字串,它將導致內部重寫[L,R=301]- 這可能會“嚴重破壞”。)
你不需要第二條規則。您可以使用RewriteCond指令在第一條規則上創建例外,就像創建要排除的例外/a-a(并重定向到自身)一樣。
例如:
RewriteCond %{REQUEST_URI} !^/b-b(/.*)?$
RewriteCond %{REQUEST_URI} !^/a-a(/.*)?$
RewriteRule ^(.*)$ /a-a/$1 [L,R=301]
您需要在測驗之前清除瀏覽器快取,因為錯誤的(301 -永久)重定向/a-a/b-b將被快取。為避免快取問題,請使用 302(臨時)重定向進行測驗。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/330832.html
