【问题标题】:Search Form Htaccess rewrite搜索表单 Htaccess 重写
【发布时间】:2015-09-28 10:16:48
【问题描述】:

我有一个运行不正常的 htaccess 规则,看起来它并没有假设几乎所有规则,如果我只设置一个规则它工作正常,问题是当我插入所有规则时,这是我上面的代码.

# Search Form Url Result
#search by category
RewriteRule ^jobs/([^/\.]+)$ jobs.php?Category=$1

#search by location
RewriteRule ^jobs/([^/\.]+)$ jobs.php?Location=$1

#search by category and location
RewriteRule ^jobs/([^/\.]+)/([^/\.]+)$ jobs.php?Category=$1&Location=$2

基本上每个规则都针对每种情况,例如,如果用户只搜索类别或位置,甚至搜索类别和位置。

【问题讨论】:

  • Rule1 和 Rule2 使用相同的模式,所以只有第一个可以工作。
  • @anubhava 抱歉,我忘了更改它,但即使我将模式更改为例如 Location=$2,问题仍然存在。是的,只有第一个有效。
  • @anubhava 那么我该如何解决这个问题?
  • 如何判断jobs/后面的字符串是类别还是位置? jobs/php 是一个位置吗? jobs/chicago 是一个类别吗?
  • @Cryszon 基本上是名字,我猜基于规则 "jobs.php?Location=" 或 "jobs.php?Category=" 确定它的信息类型,如果我很抱歉不太正确,因为正则表达式不是我的强项。

标签: php regex .htaccess mod-rewrite


【解决方案1】:

Rule1Rule2 使用相同的模式,即 ^jobs/([^/\.]+)$,所以只有第一个可以工作。

您必须在/jobs/ 之后添加适当的标识符以区分类别和位置 URI。

你可以考虑:

# Search Form Url Result

#search by category
RewriteRule ^jobs/c/([^/.]+)/?$ jobs.php?Category=$1 [L,QSA]

#search by location
RewriteRule ^jobs/l/([^/.]+)/?$ jobs.php?Location=$1 [L,QSA]

#search by category and location
RewriteRule ^jobs/([^/.]+)/([^/.]+)/?$ jobs.php?Category=$1&Location=$2 [L,QSA]

【讨论】:

  • 非常感谢,完全明白问题所在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
  • 2021-12-12
相关资源
最近更新 更多