在.htaccess中将所有出现的单词替换为另一个单词

时间:2012-12-05 13:04:29

标签: .htaccess mod-rewrite apache

我需要更改链接到我网站的所有网址中的一个单词。 我尝试使用以下规则,但只有当单词是URL

中的第一个单词时,它才能正常工作
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{REQUEST_URI} ^/foo(?:/)?(.*)$
RewriteRule ^[/]?foo[/]?(.*) /bar/$1 [R=permanent,L,NE]

当我向REQ_URI添加通配符时,输出不正确,我不知道如何处理替换。 www.example.com/abc/def/foo/ghi重新编号为www.example.com/bar/abc/def

RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{REQUEST_URI} ^(.*)/foo(?:/)?(.*)$
RewriteRule ^(.*)[/]?foo[/]?(.*) /bar/$1 [R=permanent,L,NE]

如何更正重写规则?

1 个答案:

答案 0 :(得分:2)

RewriteRule ^(.*)/foo/(.*)$ $1/bar/$2 [R=301,L]
RewriteRule ^foo/(.*)$ bar/$1 [R=301,L]

这假定foo是文件夹名称。通常在设置这样的东西时你想要某种分隔符(在这种情况下是斜杠),这样,例如,“食物”不会变成“吟游诗人”。