多个MOD重写规则

时间:2014-01-05 22:31:29

标签: php .htaccess mod-rewrite url-rewriting

我正在尝试做什么

我想重定向:

  1. www.example.com/home/placewww.example.com/index.php?location=place
  2. www.example.com/homewww.example.com/index.php
  3. 我做了什么

    .htaccess中,我有以下一行:

    RewriteRule ^home/([^/]*)$ index.php?location=$1 [L]

    这是第1部分。然而,有了这个,第2部分不起作用。但是,如果我在上面写之前写这个:

    RewriteRule ^home index.php [L]

    然后第2部分起作用,但第1部分不起作用。

    长话短说,我无法弄清楚如何启用这两个规则。这是可能的,如果是这样的话?

2 个答案:

答案 0 :(得分:1)

问题在于

RewriteRule ^home index.php [L]

将匹配两个示例,因为它们都以“home”开头。请尝试以下方法:

RewriteRule ^home/?$ index.php [L]

这将匹配/ home和/ home /但不匹配/ home / foo。

答案 1 :(得分:1)

您的第一条规则将参数设为“可选”,因为您使用的是*而不是+

RewriteRule ^home/([^/]+)$ index.php?location=$1 [L]

此外,您的第二条规则中没有$来表示URI的结尾:

RewriteRule ^home/?$ index.php [L]

现在规则可以按照您想要的任何顺序排列。