Membalikkan aturan pengalihan .htaccess

0

Biarkan saya jelaskan dengan contoh. Katakanlah, saya memiliki aturan pengalihan ini di file .htaccess saya:

RedirectMatch 301 ^/([^/]+)/([^/]+)/$ http://www.example.com/$2

Apa yang pada dasarnya dilakukannya adalah, redirect http://www.mysite.com/sports/test-post/ke http://www.mysite.com/test-post/.

Sekarang, bagaimana cara mengubah aturan .htaccess untuk melakukan yang sebaliknya? (mis. redirect http://www.mysite.com/test-post/ke http://www.mysite.com/sports/test-post/)

ini aku
sumber

Jawaban:

2
RewriteCond %{REQUEST_URI} !^/sports/ [NC]
RewriteRule ^/([^/]+)/(.*)$ http://www.example.com/sports/$1/$2 [R=301]

Ini juga akan dikirim /test-post/blah/ke /sports/test-post/blah- jika Anda tidak ingin melakukan pengalihan ketika ada hal-hal tambahan di sana, parit (.*)dari string yang cocok dan dari $2dari string yang diganti.

Shane Madden
sumber
Ups! Itu hanya sebuah contoh. sportssebenarnya bisa kategori apa saja tergantung pada halaman. Jadi, olahraga tidak bisa benar-benar sesuai aturan. SUNTING: Juga, jika mungkin, harap berikan RedirectMatchaturan alih-alih yang mod_rewriteberbasis. Terima kasih!
its_me
@AahanKrish Anda harus mengklarifikasi apa tujuan Anda. Bagaimana redirect seharusnya mendapatkan kategori yang benar, padahal yang ada hanyalah redirect /test-post? Mengenai RedirectMatch, itu hanya bisa berfungsi jika Anda hanya akan mengarahkan ulang /test-post/- jika Anda ingin mengarahkan ulang /test-post/blahmaka RedirectMatchhanya akan memberi Anda loop pengalihan.
Shane Madden
: P Betapa bodohnya aku. Terima kasih atas jawaban Anda, itu memecahkan masalah saya.
its_me