【发布时间】:2013-11-06 10:13:28
【问题描述】:
我对 Apache 的重写规则有点问题
这是我的规则
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule query/(.*) /php/query.php?name=$1 [L]
RewriteRule page/(.*) /php/page.php?page=$1 [L]
完美运行。但是当我尝试添加以下规则来重写与前两个规则不匹配的 URL 时
RewriteRule .* /php/page.php?page=home
服务器响应“内部服务器错误”。为什么?
【问题讨论】:
-
查看服务器的错误日志! (很可能你在这里创建了一个无限重定向,因为
.*当然也匹配php/page.php。) -
.*之前的第二条规则匹配
-
不,不适用于
/php/page.php?page=home的(内部)请求 -
规则存储在 .htaccess 文件中。文档说在这种情况下重写的请求会再次传递给引擎。
标签: apache mod-rewrite url-rewriting