0

私のサイトにリンクしているすべてのURLにある1つの単語を変更する必要があります。次のルールで試しましたが、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]

書き換えルールを修正するにはどうすればよいですか?

4

1 に答える 1

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

これは、fooがフォルダー名であることを前提としています。一般に、このような設定を行う場合は、たとえば「食べ物」が「吟遊詩人」にならないように、ある種の区切り文字(この場合はスラッシュ)を使用する必要があります。

于 2012-12-05T13:11:54.820 に答える