Htaccess重写规则和条件

时间:2013-04-30 18:39:14

标签: .htaccess mod-rewrite rewrite

我有这个完美无缺的规则

  

重写发动机   RewriteRule ^([^ /] +)/([^ /] +)/demo/index.php?category = $ 1& 子类别 = $ 2

这会转换我的链接

  ?

/demo/index.php的类别 = ABC&安培;的子类 = XYZ
  到
  /演示/ ABC / XYZ

但有时我想输入这样的类别名称

  

/演示/ ABC /

但不幸的是,这会导致错误找不到页面。是什么导致此错误,我该如何解决?

也可以有人提供RewriteEngine资源/书籍/教程的链接。我无法找到任何有助于像我这样的初学者的东西。谢谢。

2 个答案:

答案 0 :(得分:1)

将您的规则更改为:

RewriteRule ^([^/]+)/([^/]*) /demo/index.php?category=$1&subcategory=$2 [L,QSA]

这使得第二个参数可选(在*中使用+而不是[^/]*

答案 1 :(得分:0)

除非/demo/ABC/是本地文件系统上存在的目录,否则它将无法找到该页面。您的第一条规则只是将参数填充的链接重写为该pseduo-path,它不会建立虚拟目录或创建可靠的重定向。

RewriteRule的最佳信息可能会出现在实际Apache docs.