2015-08-18 3 views
3

Для динамического контента на моем сайте, я использую URLs с переменным запросомПреобразование динамической URL с параметрами запроса к статической URL-

e.g. http://www.example.com/directory/?state=NJ&city=Wayne&zip=07474 or 
    http://www.example.com/directory/index.php?state=NJ&city=Wayne&zip=07474 

Я хотел бы, чтобы преобразовать их в SEO дружественного статические адресов вместо

e.g. http://www.example.com/directory/Wayne-NJ-07474/ 

Я исследовал SO и нашел, что похоже, что правило перезаписи htaccess - это путь.

Я новичок, когда дело доходит до конструкций htaccess, и что я не понимаю, будет ли я получать данные, связанные с отдельными параметрами запроса, например, состояние, город и почтовый индекс. Значит, я все еще могу получить к ним доступ через _REQUEST()?

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

ответ

1

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

RewriteEngine On 
RewriteBase/

# external redirect from actual URL to pretty one 
RewriteCond %{THE_REQUEST} \s/+directory/(?:index\.php)\?state=([^\s&]+)&city=([^\s&]+)&zip=([^\s&]+)\s [NC] 
RewriteRule^/directory/%2-%1-%3? [R=302,L,NE] 

# internal forward from pretty URL to actual one 
RewriteRule ^directory/([^-/]+)-([^-/]+)-([^-/]+)/?$ directory/?state=$2&city=$1&zip=$3 [L,QSA,NC] 
+0

Спасибо большое за быстрый ответ. Я попробую это позже сегодня (и примите ответ, если он сработает). Не могли бы вы объяснить, почему существует перенаправление 302? Если эти динамические ссылки новые (т. Е. Havent были проиндексированы поисковыми системами), мне все равно понадобится 302? – rogerb

+0

302 хорош для тестирования, иначе 301 постоянно кэшируется браузерами. – anubhava

+0

Итак, после тестирования окончательное решение должно иметь 301 перенаправление, правильно? – rogerb

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