4

我在共享主机上,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)我已经RewriteEngine On在 .htaccess 中进行了检查,在此之后我的网站抛出 500 Internal server error 可能是因为 RewriteEngine 不存在,但我需要写这个来显示某人。

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

谢谢

4

2 回答 2

6

使用 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 可用时才执行下面的代码,
    b。第二行启用重写引擎,
    c。第三行设置来自DOCUMENT_ROOT
    d 的重写基本目录路径。第四行将mod_rewrite_test.txt文件的内容返回给发送到mod_rewrite_test目录的任何请求。

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

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

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

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

    否则,它将返回 404 - Page not found 错误。

于 2014-12-21T13:27:53.047 回答
-4

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

echo phpinfo();

并在浏览器中访问文件。

于 2013-08-19T09:19:16.520 回答