RedirectMatch からの奇妙な出力

RedirectMatch からの奇妙な出力

.htaccess で 301 リダイレクトをいくつか試しています。

次のようなものをリダイレクトしようとしています:

http://creek.com/wines/red/greatwine

の中へ

http://creek.com/shop/product/wines/red/greatwine

しかし、次のような出力が得られます

http://creek.com/shop/product/red/greatwine?/wines/red/greatwine

wines の下にはさまざまなサブディレクトリがあるので、それらをワイルドカードにする必要があります。分かりやすいと思います。

下記の .htaccess をご覧ください。ご協力いただければ幸いです。

RewriteEngine On
RewriteCond %{HTTP_HOST} !^creek.com$ [NC]
RewriteRule ^(.*)$ http://creek.com/$1 [L,R=301]

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteRule ^(.*)$ /index.php?/$1 [L]
</IfModule>

RedirectMatch 301 ^/wines/(.*)/(.*)$ http://creek.com/shop/product/$1

答え1

@Dan は正しいです。

RedirectMatchを に変換しRewrite、ブロックの前に配置する必要があります<IfModule mod_rewrite.c>

RewriteCond %{REQUEST_URI} ^/wines/(.*)/(.*)
RewriteRule ^(.*)$ http://creek.com/shop/product/$1 [L,R=301]

関連情報