如何在 PHP CGI 上检查 mod_rewrite?

5
我正在使用共享主机,PHP安装为CGI脚本,这是所有问题的根源。我无法确定mod_rewrite是否已启用。
注意:我没有任何根目录级别的访问权限,因此无法通过Shell进行操作。
我尝试了以下步骤: 1)在phpinfo()中检查,得知这是在PHP-CGI中寻找的错误位置。 2)尝试从apache_get_modules获取,但在PHP-CGI中不起作用。 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内部服务器错误,可能是因为没有RewriteEngine,但我需要将其写入以向其他人显示。

有人知道如何解决吗?

谢谢。

2个回答

9
使用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>

    a. 第一行告诉 Apache 只有在 mod_rewrite 可用时才执行以下代码,
    b. 第二行启用重写引擎,
    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 在服务器上处于活动状态且正常工作, 它将返回 mod_rewrite_test.txt 文件的内容,即使 test.php 文件不存在也是如此。

    否则,它将返回 404 - 页面未找到错误。


-3

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

echo phpinfo();

并在您的浏览器中访问文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接