在我的网站上,为了搜索和比较不同的东西的价格,我已经形成了“搜索”按钮。当用户输入关键字(他想要比较价格的东西),类别等并点击“搜索”按钮时,地址栏中的URL与我想要的完全相同(即/ sp / searchresults / camera / 115 / Search / bla / bla /////)使用以下代码:
上的RewriteEngine
RewriteRule ^ searchresults(。*)$
searchresults.php关键字= $ 1和;类别= $ 2及T = $ 3及btnsearch = $ 4和; MANUF = $ 5安培; brname = $ 6和; pricerange = $ 7和; H = $ 8安培; K = $ 9 &安培; MERCHANTID = $ 10安培;排序= $ 11 [L]
现在问题是当我想在任何其他页面上拥有'关键字','商品'和'排序'时,它会给我'.php'而不是给我项目名称,商家ID和排序结果。
任何帮助将不胜感激
答案 0 :(得分:0)
是的,你的问题很少,
对于使用^ searchresults(。*)$的初学者,只有在搜索结果为一个()之后捕获所有内容时,你才会得到1美元,
第二个我不确定你是否有11美元我确定你唯一被允许10但是必须等待另一个用户说是否是这种情况。
试试这个
RewriteRule ^searchresults_(.*?)_(.*?)_(.*?)_(.*?)_(.*?)_(.*?)_(.*?)_(.*?)_(.*?)_(.*?)_(.*?)_(.*?)$ searchresults.php?keyword=$1&categories=$2&t=$3&btnsearch=$4&manuf=$5&brname=$6&pricerange=$7&h=$8&k=$9&merchantid=$10&sort=$11 [L]
但是仍然不确定它是否会有效,因为你有超过10个$ vars
评论 RewriteRule ^ serachresults(。*?)$ search.php [L]
P.S我发现另一个问题是你的^ searchresults(。*)$会对searchresults.php采取行动并创建一个重定向循环
答案 1 :(得分:0)
重写规则 ^(?)/(。?)/(?)/(。?)/(?)/(。? )/(?)/(。?)/(。*?)。SearchResult所$
searchresults.php关键字= $ 1和;类别= $ 2及T = $ 3及btnsearch = $ 4和; MANUF = $ 5安培; brname = $ 6和; pricerange = $ 7和; H = $ 8安培; K = $ 9 & merchantid = $ 10& sort = $ 11 [L]
答案 2 :(得分:0)
我最好的建议是使用如下的HTACCESS规则:
RewriteRule searchresult/(.*)$ searchresults.php?fullparam=$1
然后,在PHP脚本中,解析$_GET['fullparam']
值。
$params = array();
if( isset( $_GET['fullparam'] ) )
$params = explode( '/' , $_GET['fullparam'] );
# You can use any delimiter, '/' or '_' or '-' or whatever you like
OR,使用原始问题中提到的参数顺序和名称
if( isset( $_GET['fullparam'] ) )
list( $keyword , $categories , $t , $btnsearch , $manuf , $brname ,
$pricerange , $h , $k , $merchantid , $sort , )
= explode( '/' , $_GET['fullparam'] , 12 );
此解决方案的好处是您拥有最简单的HTACCESS规则,并且您可以使用PHP的灵活性来允许URL中的任意数量的元素。