0

当我在 .htaccess 中使用重写规则时,似乎发生了内部服务器错误

我的 .htaccess 代码如下:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*)\.$ $1.php [nc]
RewriteRule  ^([a-z][a-zA-Z0-9_-]+)\.htm$ inner.php?url=$1

但我得到一个服务器错误。错误信息如下:

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。

请联系服务器管理员 admin@localhost 并告知他们错误发生的时间,以及您所做的任何可能导致错误的事情。

服务器错误日志中可能提供有关此错误的更多信息。

4

1 回答 1

0
RewriteRule ^(.*).$ $1.php [nc]
RewriteRule ^([a-z][a-zA-Z0-9_-]+).htm$ inner.php?url=$1

您能否解释一下,您希望通过第一条规则实现什么目标?

现在它会将任何文件重写为名称相同(最后一个字符除外)并以“.php”扩展的文件:

abcdefg 变成 abcdef.php < 这就是你想要的吗?

真正的问题是这种情况一遍又一遍地发生:在第一次重写后 htaccess 被第二次调用并且规则再次应用,因为没有限制重写的条件。

尝试这个:

RewriteCond %{REQUEST_URI} !\.php$    # if the uri does not end with ".php"
RewriteRule ^(.*).$ $1.php [nc,L]     # do not apply another rule after this

RewriteRule ^([a-z][a-zA-Z0-9_-]+).htm$ inner.php?url=$1

问候, 斯特凡

于 2012-04-27T07:44:55.650 回答