代码之家  ›  专栏  ›  技术社区  ›  Ian Wood

windows服务器2008上helicon ape的regex问题

  •  0
  • Ian Wood  · 技术社区  · 14 年前

    我有以下重写规则:

    RewriteRule ^([a-zA-Z0-9]*)/([a-zA-Z0-9]*)\\.php\?(.*)  /$2.php?shop=$1&$3 [NC,L]
    RewriteRule ^([a-zA-Z0-9]*)/([a-zA-Z0-9]*)\\.php        /$2.php?shop=$1 [NC,L] 
    RewriteRule ^([a-zA-Z0-9]*)/$  /index.php?shop=$1 [L,NC] 
    RewriteRule ^([a-zA-Z0-9]*)$   /index.php?shop=$1 [L,NC] 
    

    其结果 应该 重定向以下内容:

    www.site.com/Sells 
        -> /index.php?shop=Sells [works] 
    
    www.site.com/Sells/menu.php?Cat=1 
        -> /menu.php?shop=Sells&Cat=1 [failing] 
        -> /menu.php?shop=Sells [which is 'wrong'] 
    

    最后一个例子 应该 通过重写[1]匹配。。。

    我用ape附带的regex测试程序测试了规则,发现 ? . 好像没用。我有点慌乱,如果有人 可以解释为什么这次逃走不起作用。

    提前感谢你。

    3 回复  |  直到 13 年前
        1
  •  1
  •   John Kugelman Syzygies    14 年前
    RewriteRule ^([a-zA-Z0-9]*)/([a-zA-Z0-9]*)\\.php\?(.*)  /$2.php?shop=$1&$3 [NC,L]
    RewriteRule ^([a-zA-Z0-9]*)/([a-zA-Z0-9]*)\\.php        /$2.php?shop=$1 [NC,L] 
    

    逃得太多了。改变 \\.php \.php .

        2
  •  0
  •   Thorbear    14 年前

    你似乎逃出了那本该逃出去的。(你有。读作\和任何字母/符号)

        3
  •  0
  •   Ian Wood    14 年前

    缺少QSA标志!它追加了查询字符串,我忘了放进去!!!

    我在预览时添加的双斜线没有显示单个斜线!