重写时htaccess 500错误

时间:2014-05-05 20:30:54

标签: php apache .htaccess mod-rewrite http-error

我的htaccess目前看起来像这样:

RewriteEngine On
RewriteRule ^Lesson/Add/?([^/]*)/?([^/]*)/?$ ./AddLesson.php?type=$1&data=$2 [NC,L]
RewriteRule ^Lesson/?([^/]*)/?([^/]*)/?$ ./Lesson.php?type=$1&data=$2 [NC,L]

我已订购规则,因此如果网址为foo.com/lesson/add/,则第一条规则匹配,但导致foo.com/lesson/时会导致500服务器错误。

但是,如果我删除了课程专线RewriteRule ^Lesson/([^/]*)/?([^/]*)/?$ ./Lesson.php?type=$1&data=$2 [NC,L]上的问号,那就可以了。

我需要最后的斜杠才是可选的。

1 个答案:

答案 0 :(得分:0)

问题是这个正则表达式:

 ^Lesson/?([^/]*)/?([^/]*)/?$

由于它与/lesson/以及/Lesson.php匹配,导致无限循环并导致500错误。将第二条规则更改为:

RewriteRule ^Lesson/([^/.]+)/([^/.]+)/?$ ./Lesson.php?type=$1&data=$2 [NC,L,QSA]