2012-05-25 5 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 개의 밑줄을 사용할 수 있습니다. 첫 번째 규칙이 처음 네 가지를 대체하므로 발견됩니다. 그러나 다음 3 개의 밑줄 등을 대체하는 두 번째 것이 실행됩니다. 더 이상 남아 있지 않을 때까지 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

관련 문제