繁体   English   中英

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

[英]mod_rewrite rule for all except some specific paths

如何编写与此相反的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(和其他一些值)
  • 在新的url中会忽略ignore_path
  • fixed_pa​​th会转移到新网址

即,我想要一个规则以“ ignored_pa​​th / fixed_pa​​th / x”形式重定向所有内容,除了特定的页面(page1,page2等)外,这些页面已经由我的Web应用程序正确处理了。

我正在尝试使用! 和[^]语法,但我不太了解它们的工作原理,尤其是当它们包含单词而不是单个字符时。

假设您想将blah/path/some_param (但不包括两种特殊情况: blah/path/page1blah/path/page2 )重定向到/path/show/some_param ,然后将其重写为index.php?var=/path/show/some_param (以便浏览器在地址栏中显示/ path / show / some_param),然后应使用以下方法:

# Check if we have the mod_rewrite module available...
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^path/(?!page1$|page2$)([^/]+)$  http://yourdomain.com/path/show/$1 [R]
    RewriteRule ^(path/show/.*)$  index.php?var=$1 [L]
</IfModule>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM