У меня проблемы с поиском нескольких слов на моем сайте.
Моя функция поиска использует переменную $_GET
для поиска, например:
$term = $_GET['search'];
$newterm = '%'.$term.'%';
$params = [$newterm];
$sql = "SELECT * FROM products WHERE product_name LIKE ?";
$stmt = DB::run($sql,$params);
У меня также есть строкав моем .htaccess
файле, который перезаписывает URL-адрес примерно с search.php?search=search%20term
на search/search%20term
примерно так:
RewriteRule ^search/([0-9a-zA-Z-]+)/?$ search.php?search=$1 [L,NC,QSA]
Это прекрасно работает при поиске по одному слову (например, «поиск» или «термин»)но не при поиске нескольких слов (например, «критерий поиска»).
Когда я делаю это, я получаю сообщение об ошибке 404:
The requested URL example.com/search/search term.php was not found on this server.
URL, тем не менее, показывает %20
в адресной строке вместо пробела и без расширения .php
, например:
example.com/search/search%20term
Кажется, что это другой каталог / файл, а не переменная в URL, которая может бытьвызвано этой строкой в моем .htaccess
файле:
RewriteRule ^([^\.]+)$ $1.php [L,NC,QSA]
Любая помощь или помощь с этим будет принята с благодарностью.
/ ---------- EDIT---------- \
Мой полный .htaccess
файл:
Options -MultiViews
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^category/([0-9a-zA-Z-]+)/?$ category.php?id=$1 [L,NC,QSA]
RewriteRule ^product/([0-9a-zA-Z-]+)/?$ product.php?id=$1 [L,NC,QSA]
RewriteRule ^product/([0-9a-zA-Z-]+)/added?$ product.php?id=$1&added=added [L,NC,QSA]
RewriteRule ^page/([0-9a-zA-Z-]+)/?$ page.php?page_id=$1 [L,NC,QSA]
RewriteRule ^order/([0-9a-zA-Z-]+)/?$ order.php?id=$1 [L,NC,QSA]
RewriteRule ^search/([0-9a-zA-Z-]+)/?$ search.php?search=$1 [L,NC,QSA]
RewriteCond %{REQUEST_URI} ^/search/.*$ [NC]
RewriteRule ^([^\.]+)$ $1.php [L,NC,QSA]