htaccess文件-url中两个以上单词的下划线改为连字符 [英] htaccess file - change underscores to hyphens for more than two words in url
问题描述
我正在尝试将我网站的所有下划线都改为连字符.目前,我已将此代码添加到.htaccess文件中.
RewriteBase /
RewriteRule !\.(html|php)$ - [S=6]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5-$6-$7 [E=underscores:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5-$6 [E=underscores:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=underscores:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=underscores:Yes]
RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1-$2-$3 [E=underscores:Yes]
RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=underscores:Yes]
RewriteCond %{ENV:underscores} ^Yes$
RewriteRule (.*) http://www.askapache.com/$1 [R=301,L]
但是,它仅适用于www.abc.com/about_us到www.abc.com/about-us之类的网址,不适用于包含两个以上单词的网址,例如www.abc.com/about_us_what_do_you_mean>
有人可以帮我这个忙吗?谢谢
您可以使用以下两个递归规则用连字符代替所有下划线,而不是使用许多复杂的规则:
RewriteEngine On
RewriteRule \.(html?|php)$ - [L,NC]
RewriteRule ^([^_]*)_+([^_]*)$ http://www.askapache.com/$1-$2 [L,R=301,NE]
RewriteRule ^([^_]*)_+(.*)$ $1-$2 [N,DPI]
I am trying to change all underscores to hyphens for my website. currently I have this code added to .htaccess file.
RewriteBase /
RewriteRule !\.(html|php)$ - [S=6]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5-$6-$7 [E=underscores:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5-$6 [E=underscores:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=underscores:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=underscores:Yes]
RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1-$2-$3 [E=underscores:Yes]
RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=underscores:Yes]
RewriteCond %{ENV:underscores} ^Yes$
RewriteRule (.*) http://www.askapache.com/$1 [R=301,L]
However, It only works for url such as www.abc.com/about_us to www.abc.com/about-us and not for urls that have more than two words such as www.abc.com/about_us_what_do_you_mean
Can somebody help me out regarding this. Thanks
Rather than so many complex rules, you can use these two recursive rules to replace all underscore by hyphens:
RewriteEngine On
RewriteRule \.(html?|php)$ - [L,NC]
RewriteRule ^([^_]*)_+([^_]*)$ http://www.askapache.com/$1-$2 [L,R=301,NE]
RewriteRule ^([^_]*)_+(.*)$ $1-$2 [N,DPI]
这篇关于htaccess文件-url中两个以上单词的下划线改为连字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!