.htaccess 什么';这个mod_重写规则代码有什么问题? 重新启动发动机 重写规则^$public/[L] 重写规则(.*)public/$1[L]

.htaccess 什么';这个mod_重写规则代码有什么问题? 重新启动发动机 重写规则^$public/[L] 重写规则(.*)public/$1[L],.htaccess,mod-rewrite,apache2,.htaccess,Mod Rewrite,Apache2,我在Windows7上使用的是wamp apache。mod_rewrite.so已在httpd.conf中启用。此代码直接取自以下教程: 它的目的是将调用重定向到实际逻辑所在的./public文件夹 当我试图浏览这个.htaccess文件目录中的index.php时,我收到一个内部服务器错误(http 500)。当我删除这两条rewriterule语句时,它就起作用了 不确定原因,但日志文件夹中未显示任何错误。没有任何错误日志 有什么问题吗?您的表达式,(.*),与目标匹配,/public/s

我在Windows7上使用的是wamp apache。mod_rewrite.so已在httpd.conf中启用。此代码直接取自以下教程:

它的目的是将调用重定向到实际逻辑所在的./public文件夹

当我试图浏览这个.htaccess文件目录中的index.php时,我收到一个内部服务器错误(http 500)。当我删除这两条rewriterule语句时,它就起作用了

不确定原因,但日志文件夹中未显示任何错误。没有任何错误日志

有什么问题吗?

您的表达式,
(.*)
,与目标匹配,
/public/something
。重写引擎循环,直到请求URI停止更改,并且您的请求URI变成
/public/public/public/public/public
等,因为没有任何东西可以停止重写过程。尝试添加条件以防止循环:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    public/    [L]
    RewriteRule    (.*) public/$1    [L]
</IfModule>

重新启动发动机
重写规则^$public/[L]
重写cond%{REQUEST_URI}^/公开的/
重写规则(.*)public/$1[L]

因此,如果请求已经以
/public
开头,请不要应用该规则。

您是否将下一个规则集添加到
公用文件夹(我猜是根目录)?嗯?不知道你到底是什么意思!根据链接中的文档,必须添加另一个规则集。如果出现服务器错误,如果启用了错误日志,则错误日志中应该有内容。在apache配置中,必须有一行类似于
ErrorLog…/error.log
。最初发布的内容在不同的情况下是否有效?我修改了他在教程中的文件结构。。。或者简化它。或者这些规则可能在apache的早期版本中起作用?@SamLevin我不知道链接中的家伙是如何让这些规则在没有循环的情况下起作用的。
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^$   public/     [L]
    RewriteCond %{REQUEST_URI} !^/public/
    RewriteRule (.*) public/$1   [L]
</IfModule>