當寫mod_rewrite
規則,這些規則得到的順序應用它們出現。
在你的情況,你會希望你的RedirectMatch
到之前的任何其他重寫規則 —如果你removing index.php from your ExpressionEngine URLs尤其如此出現。
在您的例子,如果你只是想重定向某個目錄(即ExpressionEngine模板組),下面的規則將這樣做,同時允許網站的其餘部分正常工作:
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirect Only Matching Directories
RewriteCond %{REQUEST_URI} ^/(weddings|weddings/.*)$
RewriteRule ^(.*)$ http://www.domain.co.uk/more-weddings/$1 [R=301,L]
</IfModule>
確保該規則出現之前您的index.php(下面的例子)的去除:
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirect Only Matching Directories
RewriteCond %{REQUEST_URI} ^/(weddings|weddings/.*)$
RewriteRule ^(.*)$ http://www.domain.co.uk/more-weddings/$1 [R=301,L]
# Removes ExpressionEngine index.php from URLs
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
如果您希望Google和其他抓取工具將您的內容視爲暫時移動(響應代碼302,默認值)或永久移動(301),請務必正確配置RewriteRule Flags。
來源
2011-08-04 14:43:40
rjb
爲什麼你有美元特殊符號逃脫'\ $'?這告訴Apache尋找這個URL'/ weddings $'。在'$'之前沒有反斜槓Apache將精確地查找'/ weddings'。 – LazyOne