2017-01-31 2 views
0

Как вы думаете, я с легкостью смогу найти ответ на этот вопрос на S/O, но я пробовал все, и после нескольких часов разочарования я сдаюсь и видя, что думают настоящие эксперты.Mod Rewrite (SEO Friendly URL's)

Я уверен, это можно сделать с помощью перезаписи мод, но я отдам вам.

Проблема: Я пытаюсь превратить URL, как это ...

http://domain.com/new-cars/state.php?stateCode=al 

В это как минимум ...

http://domain.com/new-cars/al-new-cars 

Хотя, в идеале я хотел бы получить его чтобы выглядеть так (да, я готов переписать некоторый код, чтобы использовать полное имя штата как переменную $ stateCode, чтобы облегчить это!)

http://domain.com/new-cars/alabama-new-cars 

В конечном счете план должен быть в состоянии использовать URL, в ссылках, таких как ...

http://domain.com/new-cars/alabama-new-cars 

И есть .htaccess взять автомобиль ассоциирования это SEO дружественных URL с динамической версии и отображения страницы.

В любом случае, я не смог понять, как это сделать, как мне нужно.

Вот что я пробовал.

Options +FollowSymlinks 
 

 
    RewriteEngine on 
 
    RewriteBase/
 

 
    RewriteCond %{REQUEST_FILENAME} !-f 
 
    RewriteCond %{REQUEST_FILENAME} !-d 
 

 
    RewriteRule ^new-cars/([^-]*)-new-cars/$ /new-cars/state.php?stateCode=$1 [L,QSA,NC]

И различные вариации, которые я создал, используя 2 различных генераторов мод переписывания и различные ответы на вопросы других людей.

Абсолютно ничего не работает.

ожидать, когда я иду в

http://domain.com/new-cars/state.php?stateCode=AL 

Что переписывает URL в

http://domain.com/new-cars/AL-new-cars 

... но это не так. Вместо этого он остается тем же самым динамическим URL-адресом, на который я набрал. Если я перейду на «нужный» URL перезаписи, я получаю ошибку 404, говорящую, что страница не существует.

Что я делаю неправильно?

Я думал, что мои привилегии .htaccess не были установлены правильно, но я могу сделать 301 перенаправление через .htaccess довольно легко, так что это не так.

Возможно, здесь кто-то может помочь. Я пробовал так много перестановок, даже поселившись для самой простой перезаписи, просто чтобы посмотреть, смогу ли я заставить ее работать, но ничего.

Любая помощь приветствуется!

ответ

1

Вы можете использовать:

Options +FollowSymlinks 

RewriteEngine on 
RewriteBase/

# external redirect from actual URL to pretty one 
RewriteCond %{THE_REQUEST} \s/+new-cars/state\.php\?stateCode=([^\s&]+) [NC] 
RewriteRule^/new-cars/%1-new-cars? [R=301,L,NE] 

# internal forward from pretty URL to actual one 
RewriteRule ^new-cars/([^-]*)-new-cars/?$ /new-cars/state.php?stateCode=$1 [L,QSA,NC] 
+1

OMG, спасибо большое! – Trapp