【问题标题】:phpinfo() mod_rewritephpinfo() mod_rewrite
【发布时间】:2011-04-15 22:22:37
【问题描述】:

我正在尝试执行一些 url 重写,在查看 phpinfo 文件后,我看不到任何提及这一点。我的主机是 FastHosts。

我应该在phpinfo() 中寻找其他内容,还是应该假设mod_rewrite 只是disabled

【问题讨论】:

  • 为什么不尝试使用mod_rewrite 看看会发生什么?
  • mod_rewrite 是 Apache 的扩展,而不是 PHP。我认为它不会出现在您的 phpinfo 输出中。如果你看不到实际的服务器配置,我建议你在某个目录下创建一个 .htaccess 文件,然后尝试在那里配置 mod_rewrite,看看它是否有效。
  • 这就是我所做的,但没有任何效果,所以我想 100% 确定它已被禁用(而不是我的不稳定代码)。我现在知道它已被禁用,有什么方法可以启用它吗?
  • 您尝试过 Emil H 的解决方案吗?它应该工作。为我工作!

标签: mod-rewrite phpinfo


【解决方案1】:

mod_rewrite 是 apache 模块,而不是 PHP 模块。它在 phpinfo() 中不可见。在某个子文件夹中创建一个 .htaccess 并确保它包含:

RewriteEngine on

将浏览器指向该文件夹。如果您收到服务器错误,则表示未安装。否则就是这样。

【讨论】:

  • 我发现它已安装 :) 我对 .htaccess(url 重写规则)所做的更改会立即生效还是需要从 webhost 重新启动?
  • 相信不用重启Apache就能生效,是的。
  • @EmilH 是的,应该。 htaccess 更改立即生效
  • @EmilH phpinfo();如果通过网络调用执行,还会显示网络服务器信息
【解决方案2】:

当 PHP 被用作 Apache 模块时 apache_get_modules() 可以用来检查这个

<?php
print_r(apache_get_modules());
?>

然后给出如下结果:

Array
(
   [0] => core
   [1] => http_core
   [2] => mod_so
   [3] => sapi_apache2
   [4] => mod_mime
   [5] => mod_rewrite
)

如果您使用 PHP 作为 CGI,apache_get_modules() 将不起作用

【讨论】:

    【解决方案3】:

    我已按照所有程序启用 mod 重写。但这似乎不起作用。

    我什至已将流式代码正确添加到 .conf 文件中,但无济于事。

    <Directory “/var/www/html”>
    AllowOverride All
    </Directory>
    

    但后来我注意到,那些引号看起来不正常!!!砰!把那些讨厌的东西换成正确的和哇啦!!!

    【讨论】:

      【解决方案4】:

      这适用于 Debian:

      apache2ctl -t -D DUMP_MODULES
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-30
        • 2011-02-04
        • 2011-11-14
        • 2011-04-17
        • 1970-01-01
        • 1970-01-01
        • 2011-11-23
        • 2018-12-12
        相关资源
        最近更新 更多