Mod Rewrite redirect URL dengan string kueri ke url cantik
Saya berhasil mengubah URL saya dari yang jelek dengan beberapa parameter di querystring menjadi yang terlihat bersih dengan bantuan mod rewrite. Namun, ada banyak url untuk situs saya. Daripada kembali dan mengedit atribut href pada setiap tag anchor saya, saya mencoba menulis fungsi redirect di file .htaccess yang secara otomatis mengalihkan url lama ke yang baru.
Di file .htaccess saya, saya memiliki yang berikut ini:
RewriteEngine On
Redirect teams.php?league=$1&team=$2&year=$3&tab=$4 teams/(.*)/(.*)/(.*)/(.*)
RewriteCond %{REQUEST_URI} !^(css|js|img)/
RewriteRule ^teams/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ teams.php?league=$1&team=$2&year=$3&tab=$4 [L]
Tidak beruntung ... ada pikiran?
Terima kasih
Jawaban
Anda perlu melakukan pemeriksaan bahwa URL lama dengan phpdi dalamnya benar-benar diminta dengan mencocokkannya %{THE_REQUEST}, jika tidak maka akan mengalihkan loop selamanya (mis. Pengguna pergi ke team.php, melayani pengalihan ke tim, tim permintaan browser, penulisan ulang server sebagai teams.php, server melihat "teams.php" dan mengalihkan ke tim, tim permintaan browser, penulisan ulang server sebagai teams.php, dll.)
RewriteEngine On
# redirect when the user actually requests for teams.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /teams\.php\?league=([^&]+)&team=([^&]+)&year=([^&]+)&tab=([^\ ]+)
RewriteRule ^teams\.php$ /teams/%1/%2/%3/%4? [R=301,L] # internally rewrite any /teams/ URI RewriteCond %{REQUEST_URI} !^(css|js|img)/ RewriteRule ^teams/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ teams.php?league=$1&team=$2&year=$3&tab=$4 [L]