Php 搜索表单Htaccess重写

Php 搜索表单Htaccess重写,php,regex,.htaccess,mod-rewrite,Php,Regex,.htaccess,Mod Rewrite,我有一个htaccess规则,它工作得不好,看起来它并没有假设几乎所有的规则,如果我只放一个规则,它工作得很好,问题是当我插入所有的规则时,这是我上面的代码 # Search Form Url Result #search by category RewriteRule ^jobs/([^/\.]+)$ jobs.php?Category=$1 #search by location RewriteRule ^jobs/([^/\.]+)$ jobs.php?Location=$1 #sea

我有一个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
使用相同的模式,即
^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]

您的
Rule1
Rule2
使用相同的模式,即
^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]

规则1和规则2使用相同的模式,因此只有第一个模式有效。@anubhava抱歉,我忘记更改它,但即使我将其模式更改为例如Location=$2,问题仍然存在。是的,只有第一个有效。@anubhava那么我如何解决这个问题?如何确定
jobs/
后面的字符串是类别还是位置?
jobs/php
是一个位置吗?
jobs/chicago
是一个类别吗?@Cryszon基本上是名字,我猜是根据规则“jobs.php?Location=”或“jobs.php?category=”确定它是什么类型的信息,抱歉,如果我不太正确,因为正则表达式不是我的强项。规则1和规则2使用相同的模式,所以只有第一个有效。@anubhava抱歉,我忘了更改它,但即使我将其模式更改为例如Location=$2,问题仍然存在。是的,只有第一个有效。@anubhava那么我如何解决这个问题?如何确定
jobs/
后面的字符串是类别还是位置?
jobs/php
是一个位置吗?
jobs/chicago
a category吗?@Cryszon基本上就是名字,我猜是根据规则“jobs.php?Location=”或“jobs.php?category=”确定的信息类型,抱歉,如果我不太正确,因为regex不是我的强项。非常感谢,完全理解这个问题。非常感谢,完全理解这个问题。