2015-05-23 2 views
0

У меня есть URL, как это:Htaccess перенаправить с уникальным идентификатором в заголовке

http://www.example.com/en/product.php?id=23&t=page-title-here 

Я хочу, чтобы изменить URL, чтобы что-то вроде этого:

http://www.example.com/en/product23/page-title-here/ 
+0

Где «страница-название-здесь» взялось? Составлено, не важно? – Drakes

+0

Правильно, я забыл название. Исправлено – Mohammad

ответ

1

Место следующее в вашем /.htaccess файле:

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] 

Обновление: Если вы хотите совместить несколько языков s (на ваш комментарий ниже), вы можете использовать не захват группу, которая проверяет ровно два символа, а не просто 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] 
+0

Извините, у меня есть другой вопрос. этот код влияет только на каталог/en /. Для остальных каталогов я должен повторить код. Возможно Этот код работает во всех каталогах? как/sp /,/fa/и другие ... – Mohammad

+0

Несомненно, обновит мой ответ. –

+0

Это работа! большое спасибо. как насчет этого кода? RewriteCond% {REQUEST_URI} ru/product ([0-9] +)/([^ /] *) [NC] RewriteRule^(. *) $ En/product.php? Id =% 1 & t =% 2 – Mohammad

Смежные вопросы