我在我的网站上搜索多个单词时遇到问题。
我的搜索函数使用
$_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]
当搜索一个单词(例如“search”或“term”)时,这种方法很有效,但当搜索多个单词(例如“search term”)时,这种方法就不起作用。
当我这样做时,我得到一个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]
我们非常感谢您的帮助和帮助。
/—————————————————————————————————-\
我的全部
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]