2015-05-22 10 views
0

У меня есть вопрос о htaccess.Возможный перехват 301 перенаправление

У меня есть URL-адрес, как это: http://www.asd.com/producten/kia?category=car

И я хочу, чтобы это было: http://www.asd.com/producten/car/kia

Это возможно с Htaccess?

Я пробовал различные способы его решения, но пока не повезло.

Я пробовал:

RewriteRule ^producten/([^/]+)/([^/]+) /producten/$2?category=$1 [NC] 

И

RewriteRule /producten/(.*)/(.*) /producten/$2?category=$1 [R] 

Спасибо заранее,

Mert

+0

Не могли бы вы привести пример того, что вы пробовали? – JOSEFtw

ответ

1

Попробуйте использовать следующее в вашем файле /.htaccess:

RewriteEngine On 

# Step 1: Redirect the old URI to the new one and prevent looping 
RewriteCond %{ENV:REDIRECT_STATUS} !200 
RewriteCond %{QUERY_STRING} category=([^\s&]+) [NC] 
RewriteRule ^(producten)/([^/]+)/? /$1/%1/$2? [R=302,L,NE] 

# Step 2: Internally rewrite the new URI to the old one 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(producten)/([^/]+)/([^/]+)/?$ /$1/$3?category=$2 [L,QSA] 

Если вы хотите сделать редирект постоянно, изменить R=302 к R=301.

+0

спасибо большое @Mike, работает отлично! –

+0

Добро пожаловать. Не забудьте отметить ответ, как принято. –

0

Вы можете использовать этот код в DOCUMENT_ROOT/.htaccess файле:

RewriteEngine On 

# external redirect from actual URL to pretty one 
RewriteCond %{THE_REQUEST} /(producten)/([^?]+)\?category=([^\s&]+) [NC] 
RewriteRule^/%1/%3/%2? [R=302,L,NE] 

# internal forward from pretty URL to actual one 
RewriteRule ^(producten)/([^/]+)/([^/]+)/?$ $1/$3?category=$2 [L,QSA,NC] 
+0

Привет, @anubhava, спасибо за ваш ответ. Он воссоздал URL-адрес, который я хочу, но теперь я получаю «страницу не найдена». –

+0

О, вы просили только о правилах 301. Проверьте мой обновленный ответ для обеих сторон правил. – anubhava

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