1

我的 url 中有超过 9 个参数被映射到特定的 php 文件中。网址是

http://abc.com/USA/NY/male/NY/all-status/all-religion/all-ethnicity/all-cast/all-professions/all-educations/recent_posted

我的 htaccess 规则是

RewriteRule ^USA/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+ )/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ search.php?count=USA&state=$1&gender=$2&r_city= $3&r_mstatus=$4&r_religion=$5&r_ethnicity=$6&r_cast=$7&r_profession=$8&r_education=$9&sort_by=$10 [NC]

它不工作

请问有人可以解决这个问题吗?我需要正确的正则表达式规则和 URL

4

2 回答 2

6

创建这样的规则是受限制的,也是不好的做法,更糟糕的是,您将参数传递给搜索脚本;随着脚本的进展,您最有可能希望传递除美国以外的其他参数,这意味着您需要对每条路线进行新的重写。

真的,您应该将整个 url 传递给您的 php 脚本来处理路由。

RewriteEngine On
Options -Indexes
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^search/(.*)$ search.php?route=$1 [L,QSA]

这样您就可以explode('/',$_GET['route'])在脚本中为您提供所有路由参数的数组。

于 2012-09-30T15:57:07.583 回答
3

就像 Gumbo 所说,只需将全部内容发送到页面并处理:

$segments = explode('/', $_SERVER['REQUEST_URI']);
    list($country, $state, $gender, [etc etc.]) = $segments;
于 2012-09-30T15:55:33.153 回答