同様の構造のリンクがいくつかあります。
example.com/index.php/path/some-path/some-subpath?parameter=1
example.com/category/
にリダイレクトしたいだけです
しかし、私はURLパスのみに一致させたいのです。 /index.php/path/some-path/some-subpath
。これは、クエリパラメータが無関係であるためです。
私は次のルールを試しました:
RewriteRule ^/index.php/path/some-path/some-subpath?parameter=\dd\? /category/ [L,R=301]
クエリ文字列が無関係である場合、単純に無視できます。 (とにかくRewriteRule
ディレクティブでクエリ文字列を一致させることはできません。)
ルート.htaccessファイルで次のことを試してくださいredirectリクエスト:
RewriteEngine On
RewriteRule ^index.php/path/some-path/some-subpath$ /category/? [L,R=301]
ディレクトリごとの.htaccessファイルでは、RewriteRule
patternに一致するURLパスのディレクトリプレフィックスが削除されます。つまり、^index.php....
ではなく、^/index.php....
で始まるスラッシュではありません。
リクエストからクエリ文字列(ある場合)を削除するには、RewriteRule
置換の最後にある?
が必要です。それ以外の場合、parameter=1
はパススルーされ、ターゲットURLに追加されます。
これは、空の文字列を含むanyクエリ文字列に一致します。
@MrWhiteによる回答は私にとってはうまくいきませんでした。これが私のWordpressサイトで機能しているものです。
例:
OLD URL: http://website.com/xxx/yyy/picture.png
NEW URL: http://website.com/wp-content/picture.png
そこで、/ xxx/yyy /をWordPressの通常の/ wp-content /パスに置き換えたいと思います。
これを.htaccessファイルに入れます。
RewriteEngine on
RedirectMatch 301 /xxx/yyy/(.*) http://website.com/wp-content/$1