2011-07-12 67 views
0

兩個有條件地重寫包含感嘆號的URL!

domain.com/blog/post/2011/01/25/This-Is-The-Post-Title!.aspx 
domain.com/blog/post/2011/01/25/This-Is-The-Post-Title.aspx 

需要被重定向到

domain.com/blog/2011/01/25/this-is-the-post-title 

以下規則適用於網址,沒有一個感嘆號,但我似乎無法得到一個條件剝除!如果它存在

RewriteRule ^blog/post(.*).aspx$ /blog${lc:$1} [R=301,L] 

任何想法?

回答

1

您的規則之前添加此行:

RewriteRule (.*)!(.*) $1$2 [N,DPI] 

這將刪除URL ALL!字符(路徑的一部分而已,查詢字符串不受影響)。您可以將其修改爲僅適用於博客文章標題 - 取決於您。

不過要小心 - 它使用[N]標誌,它導致Apache開始從最上面的規則,以消除所有出現再次重寫,否則只有第一次出現將被取代(如果有一個以上的!)。因此,我建議將此規則放在頂部的某處。

[N]的替代標誌將有這條規則沒有這個標誌,但一個接一個地多次。

http://httpd.apache.org/docs/current/rewrite/flags.html#flag_n