我的网址中有超过9个参数被映射到特定的php文件。网址是
我的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
答案 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;