@ghst_ltnnt

Поиск по сайту. Где ошибка в htaccess?

Доброго времени суток.

Подскажите, пожалуйста, кто-нибудь, как решить задачку?

Пишу простенький поиск по сайту.

На страничке form и input:
<form action="/search/" class="form">
	<input type="text" placeholder="поиск" name="searchword" method="$_GET">
</form>


В htaccess:
RewriteRule ^search/ /search.php?%{QUERY_STRING} [L]
RewriteRule ^search/([A-Za-z0-9-]+)$ /search.php?page=$1&searchword=$2 [L]

Тестирую поиск, вывожу по 10 результатов на страницу.
Первая страница поиска отображается без проблем.
http://testsite.ru/search/?searchword=тестим

Формирую ссылку на вторую страницу http://testsite.ru/search/page2/?searchword=тестим, но по этой ссылке загружается первая страница
Т.е. $_GET['page'] пустой

Где я допускаю ошибку?
  • Вопрос задан
  • 2316 просмотров
Решения вопроса 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
1)
<input type="text" placeholder="поиск" name="searchword" method="$_GET">
Правильно пишется method="GET"

2)
RewriteRule ^search/ /search.php?%{QUERY_STRING} [L]

лучше писать
RewriteRule ^search/? /search.php?%{QUERY_STRING} [L]

3)
RewriteRule ^search/([A-Za-z0-9-]+)$ /search.php?page=$1&searchword=$2 [L]

У вас в регулярке стоит только 1 выражение - а мачится два.
Не очень понял что вы хотите получить, но могу предположить что правильно будет
RewriteRule ^search/([A-Za-z0-9-]+)/?$ /search.php?page=$1 [QSA,L]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ghst_ltnnt Автор вопроса
если в htaccess прописать эти две строчки:
RewriteRule ^search/? /search.php?%{QUERY_STRING} [L]
RewriteRule ^search/([A-Za-z0-9-]+)/?$ /search.php?page=$1&searchword=$2 [QSA,L]
то параметр "searchword" передается без проблем, а вот передать параметр "page" не получается.

Т.е. все генерируемые страницы открываются без параметра "page"
http://testsite.ru/search/?searchword=тест
http://testsite.ru/search/page2/?searchword=тест
http://testsite.ru/search/page3/?searchword=тест

А хочется на каждой из генерируемых страниц получать оба параметра - "page" и "searchword".
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы