いくつかの URL を でリダイレクトしようとしています.htaccess
が、成功しません。問題は、URL の 2 つの異なる部分をリダイレクトする必要があることです。
リダイレクトする必要があるものの例を次に示します。
example.com/huawei-reparatie/huawei-mate-7-reparatie
リダイレクト先:
example.com/reparatie/huawei/huawei-mate-7
では、何をすべきでしょうか:
- 割る
huawei-reparatie
reparatie/huawei
-reparatie
すべてのURLの末尾の を削除します
これらは動的 URL なので、これだけではありません。さまざまなブランド ( などhuawei
) やさまざまなデバイス ( などhuawei-mate-7
)の URL をすべてリダイレクトする必要があります。
誰かが私を助けてくれることを願っています。
答え1
要件を明確にするには:
/first-second/text-to-keep-removethis
リダイレクト先:
/second/first/text-to-keep
どこ
first
、小文字の az のみが含まれますsecond
。removethis
first
second
1 つのハイフンで区切られます。removethis
先頭に 1 つのハイフンが付き (これも削除されます)、常に URL パスの末尾に出現します。text-to-keep
az とハイフン文字の任意の連続です。
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 (永続的) リダイレクトに変更してください。