PHP .htaccess 重写搜索词

标签 php mysql apache .htaccess mod-rewrite

我必须使用 .htaccess 重写我的搜索词,并将正确的操作传递到我的表单。

<form method="GET" action="/search/">
  <input type="text" name="src"/>
  <button>Search</button> 
</form>

我使用此规则重写搜索 URL:

RewriteRule ^search/?$ views/search.php?src=$1 [NC,QSA,L]

所以我必须传递 $src 变量以在 MySQL 查询中提供服务

当我到达 www.domain.com/search 页面时,即使我附加 ?src=xxx ,我也会收到未定义索引的错误

这是结果页面代码(某些部分被删除):

$term = $_GET['src'];

if(isset($term) !== NULL)
    {  
    $resultsrc = $mysqli -> query("SELECT * FROM `products` WHERE name LIKE '" . $term . "' OR brand LIKE '" . $term . "' LIMIT 0 , 30");
}
    while($row = mysqli_fetch_all($resulsrc))
   { 
 [... etc ... ]
  }
}

感谢所有能够提供帮助的人。

最佳答案

您需要使用正则表达式捕获组捕获 url 中/search 后面的部分,然后在目标 url 中将其用作 $1

RewriteRule ^search/(.*)/?$ views/search.php?src=$1 [NC,QSA,L]

这将重写

  • /搜索/foo

  • /views/search.php?src=foo

关于PHP .htaccess 重写搜索词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35289429/

相关文章:

Apache Ant 区别 - exec 与 apply

linux - 如何将 DocumentRoot 更改为自定义文件夹

php - SQL 角色扮演游戏——引用技能表的类表

php - 为什么会出现此mysql错误?

java - Android链接PHP到MySQL以登录应用程序

php - 滚动浏览 MySQL 数据时显示正确的选项卡

php - .htaccess 用 gif url 中的参数重写 url

php - Redis 故障导致 Laravel 5.6 中的登录和注册问题

MySQL:大表、慢查询和索引

apache - 使用 Apache 部署 Trac 1.0 - 'chrome' 和 'site' 文件夹 MIA