在 .htaccess 中从 URL 中删除单词
Posted
技术标签:
【中文标题】在 .htaccess 中从 URL 中删除单词【英文标题】:In .htaccess remove word from URL 【发布时间】:2012-06-06 00:45:48 【问题描述】:经过一个多小时的搜索,我仍然无法弄清楚如何将链接从http://site/fr/other
重定向到http://site/other
。
我正在使用此代码:
RewriteEngine On
RewriteRule ^/fr/(.*)$ /$1 [L,R=301,QSA]
【问题讨论】:
【参考方案1】:只需删除第一个正斜杠:RewriteRule ^fr/(.*)$ /$1 [L,R=301,QSA]
。
在http://htaccess.madewithlove.be/ 试试这个。
【讨论】:
谢谢,你是对的,但是现在,如果用户键入 site/fr,它会给他们一个 404,但是 site/fr/ 可以工作。我应该为 case site/fr 添加规则吗? 是的,您可以添加另一个规则:RewriteRule ^fr$ / [L,R=301,QSA]
。
再次感谢,它成功了!组合起来看起来更干净。祝你有美好的一天
哎呀,对不起。我删除了合并的一个 (RewriteRule ^fr((?:/.*$)?) $1 [L,R=301,QSA]
),因为 http://site/france
会重定向到 http://site/ance
,我认为这不是预期的行为。
好吧,这个组合规则可能会更好:RewriteRule ^fr((?:(?:\s*|/.*)$)) $1 [L,R=301,QSA]
。 http://site/france
不会重定向到 http://site/ance
; http://site/fr
重定向到 http://site/
; http://site/fr/
重定向到 http://site/
; http://site/fr/other
重定向到 http://site/other
。【参考方案2】:
从 url 中删除 '-xyz-'
RewriteRule ^(.*)-xyz-(.*).html$ http://%SERVER_NAME/$1-$2.html [NC,R=301,L]
从 url 'http://yoursite.com/xyz/some-url.html' 中删除 'xyz'
RewriteRule ^xyz/(.*)\.html$ $1-watches.html [L,R=301]
从 url 'http://yoursite.com/some-dir/xyz/some-url.html' 中删除 'xyz'
RewriteRule ^(.*)/xyz/(.*).html$ http://%SERVER_NAME/$1/$2.html [NC,R=301,L]
【讨论】:
以上是关于在 .htaccess 中从 URL 中删除单词的主要内容,如果未能解决你的问题,请参考以下文章
使用 .htaccess 从 URL 中删除“/php/”子目录