【问题标题】:How to check for mod_rewrite on PHP CGI如何在 PHP CGI 上检查 mod_rewrite
【发布时间】:2013-08-21 00:52:21
【问题描述】:

我在共享主机上,PHP 被安装为 CGI 脚本,这就是我无法找到是否启用 mod_rewrite 的所有问题

Note: I don't have any root level access so i can't much do with Shell.

我尝试了以下方法:
1) 签入phpinfo(),我知道这是在 PHP-CGI 中寻找的错误位置。


2) 我尝试从 agi 在 PHP-CGI 中不起作用的 apache_get_modules 获取它:(
3) 我试过了:

if (strpos(shell_exec('/usr/local/apache/bin/apachectl -l'), 'mod_rewrite') !== false) {
    // mod_rewrite is enabled
}

这是询问 apache 的路径,我没有此信息,SHELL 无法回复我,$_SERVER 什么也没有。
4) 我在 .htaccess 中检查了RewriteEngine On,之后我的网站抛出 500 Internal server error 可能是因为 RewriteEngine 不存在,但我需要写给别人看。

任何机构都知道如何检查是否完成。

谢谢

【问题讨论】:

    标签: php apache mod-rewrite


    【解决方案1】:

    使用 PHP CGI 并没有简单的方法来确定服务器上的 mod_rewrite 是否可用。

    因此,您需要通过对服务器进行测试调用来找出它。此方法可以使用以下步骤,

    1. 在服务器上创建一个名为mod_rewrite_test的目录。

    2. 在这个目录下添加.htaccess文件,代码如下,

      <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /mod_rewrite_test RewriteRule .* mod_rewrite_test.txt </IfModule>

      一个。第一行告诉 apache 只有在 mod_rewrite 可用时才执行下面的代码,
      湾。第二行启用重写引擎,
      C。第三行设置来自DOCUMENT_ROOT的重写基本目录路径
      d。第四行将mod_rewrite_test.txt文件的内容返回给发送到mod_rewrite_test目录的任何请求。

    3. 在同一目录中创建一个名为 mod_rewrite_test.txt 的文件。在这个文件中写入ok并保存。

    4. 现在,在你的 php 脚本中使用CURL,调用类似的 URL,

      http://www.your-domain.com/mod_rewrite_test/test.php 并检查响应。

      所以,根据我们的.htaccess 代码,如果 mod_rewrite 处于活动状态并在服务器上工作, 即使 test.php 文件不存在,它也会返回 mod_rewrite_test.txt 文件的内容,即 ok

      否则会返回 404 - Page not found 错误。

    【讨论】:

      【解决方案2】:

      要检查 mod_rewrite 模块是否启用,请在服务器的根文件夹中创建一个新的 php 文件。输入以下内容

      echo phpinfo();
      

      并在浏览器中访问文件。

      【讨论】:

        猜你喜欢
        • 2013-08-10
        • 2012-08-18
        • 1970-01-01
        • 2016-07-17
        • 2011-11-12
        • 1970-01-01
        • 2011-10-17
        • 1970-01-01
        • 2011-02-13
        相关资源
        最近更新 更多