【问题标题】:Search form parameter rewrite rule搜索表单参数重写规则
【发布时间】:2011-04-14 08:04:44
【问题描述】:

我真的是重写规则的新手..
我有一个带有搜索表单和三个输入的 php 脚本:标题;类别 ;地区 。 用户可以按标题类别或地区搜索,所以参数不能按特定顺序。有时他们按标题搜索有时只按类别一个地区...

我的规则

RewriteRule ^list/(.*)/(.*)/(.*)/$ /List.php?category=$1&region=$2&title=$3 [L]
RewriteRule ^list/(.*)/(.*)/$ /List.php?category=$1&region [L]
RewriteRule ^list/(.*)/$ /List.php?category=$1 [L] 
RewriteRule ^list/(.*)/(.*)/$ /List.php?region=$2&title=$3 [L]
RewriteRule ^list/(.*)/(.*)/$ /List.php?category=$12&title=$3 [L]

....等等,直到我完成所有排列。 有没有办法控制变量来得到这个:

/list/category/ /list/region/
/list/region/category/
/list/category/region/
/list/region/title/.....

? 提前致谢

【问题讨论】:

  • 如何从搜索表单中得到这样的格式?使用 javascript?为什么要使用重写进行搜索?没用的
  • 如何区分/list/foo//list/foo/bar/中的foo是类别还是区域?

标签: php .htaccess parameters xampp mod-rewrite


【解决方案1】:

为什么不使用

RewriteRule ^List\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /List.php [L]

所以每个请求都被重定向到 list.php

然后用它爆炸

$folder = explode('/',substr($_SERVER['REQUEST_URI'],1));

http://example.com/list/region/title 你得到

folder[0] = 'list';
folder[1] = 'region';
folder[2] = 'title';

【讨论】:

  • 谢谢,但是......如果列表中的参数丢失怎么办 - 我如何知道文件夹 [] 是否是真正的参数让我们说标题 - 例如。 title='title'。我想我错过了什么,我不知道......
  • 我会尽量明确一点:
  • 我会尝试更明确一点:如果我能以这种格式(参数名称是类别、子类别、品牌、地区)为localhost/category-vehicle/subcategory-cars/brand-honda/… 制定规则,我会到现在用PHP解析这个?更重要的是,如果发生用户只选择地区和品牌,如何附加 qs ?只是我不明白...
猜你喜欢
  • 1970-01-01
  • 2023-04-02
  • 2012-10-16
  • 2015-10-12
  • 1970-01-01
  • 2017-12-19
  • 2012-03-06
  • 2018-02-03
  • 2013-12-26
相关资源
最近更新 更多