Htaccess リダイレクト フォルダーと URL の末尾の削除

Htaccess リダイレクト フォルダーと URL の末尾の削除

いくつかの URL を でリダイレクトしようとしています.htaccessが、成功しません。問題は、URL の 2 つの異なる部分をリダイレクトする必要があることです。

リダイレクトする必要があるものの例を次に示します。

example.com/huawei-reparatie/huawei-mate-7-reparatie

リダイレクト先:

example.com/reparatie/huawei/huawei-mate-7

では、何をすべきでしょうか:

  • 割るhuawei-reparatiereparatie/huawei
  • -reparatieすべてのURLの末尾の を削除します

これらは動的 URL なので、これだけではありません。さまざまなブランド ( などhuawei) やさまざまなデバイス ( などhuawei-mate-7)の URL をすべてリダイレクトする必要があります。

誰かが私を助けてくれることを願っています。

答え1

要件を明確にするには:

/first-second/text-to-keep-removethis

リダイレクト先:

/second/first/text-to-keep

どこ

  • first、小文字の az のみが含まれますsecondremovethis
  • firstsecond1 つのハイフンで区切られます。
  • removethis先頭に 1 つのハイフンが付き (これも削除されます)、常に URL パスの末尾に出現します。
  • text-to-keepaz とハイフン文字の任意の連続です。

mod_rewrite を使用して、ルート ファイルの先頭で次のコードを試してください.htaccess

RewriteEngine On

RewriteRule ^([a-z]+)-([a-z]+)/([a-z-]+?)-[a-z]+$ /$2/$1/$3 [R=302,L]

RewriteRule パターン(最初の引数) は、スラッシュ プレフィックスを除いた、要求された URL パスのみに一致する正規表現です。

$n代替文字列は、対応するキャプチャグループ(括弧で囲まれたサブパターン)への後方参照です。RewriteRule パターン

最初のリクエストに存在するクエリ文字列は変更されずに渡されます。クエリ文字列を削除する必要がある場合は、フラグQSD(クエリ文字列の破棄) を追加します。

これは一時的な (302) リダイレクトであることに注意してください。正常に動作していることを確認した後、意図している場合にのみ 301 (永続的) リダイレクトに変更してください。

関連情報