2012-03-10 37 views
0

我一直在使用tuckey Apache mod重写引擎来重写url。但是我对逃逸点装饰URLS问题,如下图所示,在Apache中转义点mod_rewrite

www.example.com/hello.world -> www.example.com/derive.php 

遵守规则是我写上面做事情的人,

RewriteRule ^/?(([A-Za-z0-9:-])+([.]*))$ /derive.php[L] 

RewriteRule ^/?(([A-Za-z0-9:-\.])+)$ /derive.php[L]不受tuckey允许)

我认为这个问题可以很好地回答那些谁已经使用tuckey来装饰网址。

回答

2

在一个字符类中,点没有任何特殊的含义,所以它不应该被转义;你应该可以简单地写:

RewriteRule ^(?!/?derive[.]php$)/?[A-Za-z0-9:.-]+$ /derive.php [L] 
+0

谢谢Ruakh, 仍然我无法得到它的工作。你的解决方案给了我一个java.lang.StackOverflowError。 就像我上面提到的,我在GAE应用程序中使用了tuckey mod_rewrite引擎。显然它不支持所有的mod_rewrite选项。 任何人都有解决这个问题的方法吗? 谢谢, – 2012-03-10 13:48:50

+0

@ChamikaDilshan:我怀疑这是因为无限递归 - '/ derive.php'本身符合这个规则,所以它无限递归。 ('[L]'应该可以防止这种情况,但是Tuckey可能不会很好地支持它)所以我修改了正则表达式,在应用此规则时明确排除了'derive.php'。 – ruakh 2012-03-10 14:08:18

+0

非常感谢Ruakh 它的工作。 – 2012-03-10 14:31:48