除某些特定路径外的所有mod_rewrite规则

时间:2011-03-16 05:44:25

标签: regex mod-rewrite

如何编写与此相反的mod_rewrite规则:

RewriteRule ^(.+)/fixed_path/(page1|page2)([^/]+)$ /index.php?fixed_path/show/$2 [L]

也就是说,我想要表格中的所有页面:

ignored_path/fixed_path/x

重定向到

/index.php/fixed_path/show/x

,其中

  • x 等于page1,page2(以及其他一些值)
  • 在新网址
  • 中忽略ignored_pa​​th
  • fixed_pa​​th被转移到新网址

即,我希望规则以“ignored_pa​​th / fixed_pa​​th / x”的形式重定向所有内容,但特定页面(第1页,第2页等)除外,这些页面已由我的网络应用程序正确处理。

我正在尝试使用!和[^]语法,但我不太明白这些是如何工作的,特别是当它们涉及的单词不是单个字符时。

1 个答案:

答案 0 :(得分:1)

假设您想要blah/path/some_param(但不是两个特殊情况:blah/path/page1blah/path/page2),则需要重定向到/path/show/some_param,然后将其重写为{{1} (以便浏览器在地址栏中显示/ path / show / some_param),然后以下应该可以做到这一点:

index.php?var=/path/show/some_param