【问题标题】:Do you have to restart apache to make re-write rules in the .htaccess take effect?您是否必须重新启动apache才能使.htaccess中的重写规则生效?
【发布时间】:2010-09-13 15:24:19
【问题描述】:

我已将 .htaccess 文件推送到生产服务器,但它们不起作用。下一步是重新启动,还是我应该检查其他内容。

【问题讨论】:

    标签: apache .htaccess mod-rewrite restart


    【解决方案1】:

    No:

    Apache 允许通过放置在网络树中的特殊文件来分散管理配置。特殊文件通常称为.htaccess,但可以在AccessFileName 指令中指定任何名称...由于每个请求都会读取.htaccess 文件,因此对这些文件所做的更改会立即生效...

    【讨论】:

    • 如果您在启用站点的文件中将用户名添加到“需要用户”中,我凭经验发现您确实需要重新启动。一个优雅的人会这样做。
    【解决方案2】:

    您的 .htaccess 中有什么内容?重写规则?检查 mod_rewrite 是否已安装并启用。

    其他东西?尝试在该目录上将 AllowOverride 设置为“全部”。

    【讨论】:

      【解决方案3】:

      仅当您没有将 mod_rewrite 模块添加到 Apache。

      如果您更改任何 Apache “.conf” 文件,您只需要重新启动 Apache。

      【讨论】:

        【解决方案4】:

        来自 apache 文档: 最常见的问题是未设置 AllowOverride 以使您的配置指令得到遵守。确保您没有对相关文件范围有效的 AllowOverride None。对此的一个很好的测试是将垃圾放入您的 .htaccess 文件并重新加载。如果未生成服务器错误,则几乎可以肯定 AllowOverride None 有效。

        【讨论】:

        【解决方案5】:

        对 .htaccess 的更改不需要重新启动。还有其他问题。

        确保您的 .htaccess 包含该语句

        重写引擎开启

        这是必需的,即使它也存在于 httpd.conf 中。还要检查 httpd 进程是否可以读取 .htaccess。
        检查 error_log - 它会告诉您 .htaccess if 中正在使用的任何错误。 在 .htaccess 中故意设置语法错误是一个很好的检查,以确保文件正在被使用——您应该在同一目录中的任何页面上收到 500 错误。

        最后,您可以在 httpd.conf 中使用如下命令启用重写日志:

        RewriteLog "日志/重写日志"

        重写日志级别 7

        由此生成的日志文件将为您提供匹配的重写规则以及如何处理它们的详细信息。

        【讨论】:

        • 这有点过时了。我遇到了类似的问题,并想为特定用例调试我的重写。我尝试了这种方法,但经过一番挫折和挖掘后,我发现了问题所在。这适用于旧版本的 apache。对于 apache2.4 > 将上面的 RewriteLog 和 LogLevel 替换为:LogLevel alert rewrite:trace7restarting apache 后,应该会在error.log 中看到痕迹,希望对您有所帮助。 http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
        • 我在 Debian、WSL 上使用 apache 2.4 并且没有 httpd 配置。我的 htaccess 无法识别。
        【解决方案6】:

        我有同样的问题,似乎 PiedPiper 关于 AllowOverride 的帖子最有帮助。检查您的 httpd.conf 文件中的“AllowOverride”并确保它设置为 All。

        【讨论】:

        【解决方案7】:

        如果 .htaccess 无法正常工作,则不需要重新启动,可能的原因包括。

        • AllowOverride 可能无法设置哪个用户可以在 httpd.conf 中设置,或者可能需要联系服务器管理员。

        • 检查 .htaccess 的文件名,它应该是 .htaccess 而不是 htaccess.txt 参见here 以获取如何创建的指南。

        • 尝试使用Options -Indexesdeny all 之类的简单指令,看看它是否有效。

        • 如果有重定向规则或类似规则,则每次清除浏览器缓存,如果缓存了先前的重定向,则看起来好像事情不正常。

        【讨论】:

          猜你喜欢
          • 2014-06-02
          • 2014-11-21
          • 1970-01-01
          • 2014-03-01
          • 2015-12-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-22
          相关资源
          最近更新 更多