【问题标题】:htaccess more than 9 variableshtaccess 超过 9 个变量
【发布时间】:2012-09-30 15:45:46
【问题描述】:

我的 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 规则是

重写规则 ^美国/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+) /([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ search.php?counrty=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

【问题讨论】:

  • 什么不起作用?根本没有重新映射或结果错误?
  • 如果结果错误,我会给你一个免费的提示; counrty != country.
  • 使用PHP解析网址,更方便。
  • 这么长的东西最好不要重写,它仍然看起来又长又乱。只需像往常一样将它们粘贴在查询字符串中即可。
  • 据我所知,9 是最大值......也许你不能重写搜索页面? ??????

标签: php regex .htaccess


【解决方案1】:

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

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

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

这样你就可以在你的脚本中explode('/',$_GET['route']),给你一个包含所有路由参数的数组。

【讨论】:

  • 您还可以寻找一些路由类,它们可以做到这一点以及更多。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 2021-07-14
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多