2012-05-25 109 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