Я знаю, что это, вероятно, общий вопрос, и его задавали раньше, но .htacess выглядит чужим для меня, и я не могу заставить его работать, глядя на предыдущие вопросы.
У меня есть индексный скрипт, который ищет и синтаксис:
.../listing/?field=property_type&query=retail
Я просто хочу переписать это так:
.../listing/{field}/{query}
Еще один улов, у меня есть некоторые поля, которые являются логическими .. например:
.../listings/?forlease=1
Поэтому в этом случае я просто использую isset()
но хотел бы переписать это:
.../listings/forlease/
Спасибо за вашу помощь, как всегда! Переполнение стека!
Я вижу некоторые хорошие ответы, но полностью, что я ищу:
Пользовательские запросы: .../listing/property_type/retail/
Apache перезаписывает: ../listing/?field=property_type&query=retail
Сценарий видит: $_GET['field']='property_type'
& $GET['query']='retail'
В случае логического (все булевы будут иметь только один Dir):
Пользовательские запросы: .../listing/forlease/
Apache перезаписывает: ../listing/?forlease=1
Скрипт видит: $_GET['forlease'] = 1
В вашем .htaccess у вас может быть несколько простых правил:
RewriteRule ^.*/listings/([a-zA-Z0-9_]+)/([a-zA-z0-9_]+)$ /listing/?property_type=$1&query=$2 [QSA,L] RewriteRule ^.*/listings/forlease/$ /listing/?forlease=1 [QSA,L]
Если ваш веб-сервер Apache, то вы можете использовать mod_rewrite.
Выезд: http://www.yourhtmlsource.com/sitemanagement/urlrewriting.html =)
RewriteRule ^.*/listing/([^/]*)/?$ listing/?$1=1 [NC,L] RewriteRule ^.*/listing/([^/]*)/?(.*)$ listing/?property_type=$1&query=$2 [NC,L]
Попробуйте это, сначала проверит одно условие (http: //…listing/forlease), в противном случае перезаписывает (http: //…listing/field/query)
Вы можете захотеть:
RewriteRule ^.*/listing/([^/]*)/?$ listing/?$1=1&%{QUERY_STRING} [NC,L] RewriteRule ^.*/listing/([^/]*)/?(.*)$ listing/?property_type=$1&query=$2&%{QUERY_STRING} [NC,L]
Чтобы сохранить дополнительные параметры в строке запроса.