2012-05-25 65 views

回答

1

您可以使用此:

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/

RewriteRule !\.(html|php)$ - [S=4] 
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1/$2/$3/$4/$5 [E=uscor:Yes] 
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1/$2/$3/$4 [E=uscor:Yes] 
RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1/$2/$3 [E=uscor:Yes] 
RewriteRule ^([^_]*)_(.*)$ $1/$2 [E=uscor:Yes] 

RewriteCond %{ENV:uscor} ^Yes$ 
RewriteRule (.*) http://example.com/$1 [R=301,L] 

發現這裏(和改了一下):http://www.askapache.com/htaccess/modrewrite-tips-tricks.html#Rewrite_underscores_hyphens_SEO_URL 它將爲1至4 underscroes工作

+1

實際上最多可以使用10個下劃線。由於第一條規則取代了它發現的前四條。但是接下來執行第二個替換下三個下劃線等。即使有更多的10 apache將繼續刪除10個下劃線和重定向,直到沒有更多的下劃線。 – Gerben

+1

你說得對,最多可以使用10個下劃線。但是如果我使用11,URL「a_b_c_d_e_f_g_h_i_j_k_l.php」被重定向到「a/b/c/d/e/f/o/h/i/j/k/l.php/b/c/d/e /f/o/h/i/j/k/l.php/b/c/d/e/f/o/h/i/j/k/l.php/b/c/d/e/f/o ...「的URL沒有結束,所以瀏覽器顯示414錯誤。 – Christopher

+0

你可能就在那裏。可能在所有重寫過程中添加「L」標誌將解決此問題。 – Gerben