我在mod_rewrite正则表达式中使用匹配量词{},如果量词匹配1或2次则重写规则工作,如果匹配3次或更多次则不工作。为什么?
示例.htaccess文件:
这项工作(我需要mydomain.com/download.ex):
RewriteEngine On
RewriteRule ^download\..{1,2}$ /download.php [L]
但这不起作用,500错误,只更改了2到3个最大量词(我需要mydomain.com/download.exe):
RewriteEngine On
RewriteRule ^download\..{1,3}$ /download.php [L]
太棒了,但这真的很棒。为什么会这样?
P.S。 版本:
root@andrey:/var/www/default/www# apache2 -v
Server version: Apache/2.4.7 (Ubuntu)
Server built: Jul 22 2014 14:36:38
root@andrey:/var/www/default/www# uname -a
Linux mydomain.com 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
root@andrey:/var/www/default/www# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty
答案 0 :(得分:0)
正则表达式\.{1,3}
工作正常,但它不起作用,因为它也匹配/download.php
并导致mod_rewrite无限循环,从而导致500错误。
要解决这个问题,在扩展名为.php
时停止重写会有一个负面的预测:
RewriteEngine On
RewriteBase /
RewriteRule ^download\.(?!php$).{1,3}$ download.php [L,NC]