htaccess超过9个变量

时间:2012-09-30 15:45:47

标签: php regex .htaccess

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

  

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

我的htaccess规则是

  

重写规则   ^ USA /([^ /] +)/([^ /] +)/([^ /] +)/([^ /] +)/([^ /] +)/([^ /] +) /([^ /] +)/([^ /] +)/([^ /] +)/([^ /] +)/?$   的search.php counrty =美国及其?状态= $ 1和;性别= $ 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

2 个答案:

答案 0 :(得分:6)

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

你真的应该将整个网址传递给你的php脚本来处理路由。

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

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

答案 1 :(得分:3)

就像Gumbo所说的那样,只需将整批内容发送到页面并处理:

$segments = explode('/', $_SERVER['REQUEST_URI']);
    list($country, $state, $gender, [etc etc.]) = $segments;