简单重写规则问题

Simple Rewrite Rule issue

我很难理解这个重写规则的第 3 行有什么问题:

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*)\.html$ .php [L]
RewriteRule ^fr/lecon-de-kite\.html$ kite-lessons.php?lang=fr [L]
RewriteRule ^fr$ index.php?lang=fr [L]
RewriteRule ^it$ index.php?lang=it [L]

当我尝试访问 http:///localhost/kitemeup/fr/lecon-de-kite.html 时,出现 Not Found 错误

在您的站点根目录 .htaccess 中这样设置:

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^fr/lecon-de-kite\.html$ kite-lessons.php?lang=fr [L]
RewriteRule ^(it|fr)/?$ index.php?lang= [L,QSA]

RewriteRule ^(.+)\.html$ .php [L,NC]

只需了解规则的排序很重要,因为 mod_rewrite 从上到下处理规则。您的 html -> php 规则优先并将所有 .html URI 转换为 .php,使您的第二条规则无效。