php 获取重写后url,php – htaccess如何在url重写后访问/获取搜索参数

我有一个htaccess重写规则,基于提交的表单.我正在尝试阅读搜索参数,这是关键字搜索的一个简单示例,但理想情况下最终会添加更多参数:

单个参数url://thesite.com/search?keyword =示例文本

2参数url://thesite.com/search?keyword = sample text& location = myCity

在我的htacess中,我有一个简单的重写规则寻找搜索,如下所示:

RewriteRule ^.*search?(.*)$/displayPage.php?page=search&options=$1

我像这样访问options参数:

$searchOptions = filter_input(INPUT_GET, "options")!==NULL?filter_input(INPUT_GET, "options"):'';

当我输出这个变量时,它什么都没有.

我尝试了var_dump($_ GET),结果是:

array (size=2)

'page' => string 'search' (length=6)

'options' => string '' (length=0)

用于生成url的html:

我期待$searchOptions包含以下内容:

对于单个参数:keyword =示例文本

对于多个参数:keyword = sample text& location = myCity

我可以根据&分拆字符串.和=并用空格替换.

任何想法为什么没有包括参数?

非常感谢你

更新:应用案例1

RewriteCond %{QUERY_STRING} ^(.*)$

RewriteRule ^search?(.*)/$displayPage.php?page=search&%1

我的apache日志报告如下:

"GET /search?keyword=test+text HTTP/1.1" 404 286

什么是不正确的?我试过删除?从重写规则,我用/作为提供的样本替换它.我修改了html以包含/之后.当我这样做时,在apache日志中报告了以下内容:

"GET /search/?keyword=test+text HTTP/1.1" 301 329

"GET /search?keyword=test+text HTTP/1.1" 404 286

额外的HTACCESS信息

我已经应用了以下内容

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)/$/$1 [L,R=301]

我有一堆其他的RewriteRule用于其他功能齐全的网址.这是我的第一个查询字符串,它让我难倒.

UPDATE2

尝试Steve E. [QSA]

RewriteRule ^.*search?(.*)/$displayPage.php?page=search&%1 [QSA]

Apache日志报告

"GET /search?keyword=sample+search HTTP/1.1" 404 286

解决方案:由Steve E提供上面的一个修复程序,在调用displayPage.php之前忘记了/.它适用于单个和多个参数.

标签:php,htaccess,forms,html

来源: https://codeday.me/bug/20190609/1202891.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值