Mam takie adresy URL:
http://www.example.com/en/product.php?id=23&t=page-title-here
Chcę zmienić adresy URL na coś takiego:
http://www.example.com/en/product23/page-title-here/
Odpowiedzi:
1 dla odpowiedzi № 1Umieść następujące elementy w swoim /.htaccess
plik:
RewriteEngine on
# Step 1: Redirect file-based URIs to new "pretty permalinks" and prevent looping
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{QUERY_STRING} ^id=(d+)&t=([^/]+)$ [NC]
RewriteRule ^(en/product).php$ /$1%1/%2? [R=302,NE,L]
# Step 2: Rewrite above permalink to file-based URI
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(en/product)(d+)/([^/]+)/?$ /$1.php?id=$2&t=$3 [L,QSA]
Aktualizacja: Jeśli chcesz dopasować wiele języków (zgodnie z komentarzem poniżej), możesz użyć grupy bez przechwytywania, która sprawdza dokładnie dwa znaki zamiast tylko en
:
# Use this rule in step 1 above
RewriteRule ^((?:[a-z]{2})/product).php$ /$1%1/%2? [R=302,NE,L]
# Use this rule in step 2 above
RewriteRule ^((?:[a-z]{2})/product)(d+)/([^/]+)/?$ /$1.php?id=$2&t=$3 [L,QSA]