如何在PHP CGI上检查mod_rewrite

时间:2013-08-19 09:11:37

标签: php apache mod-rewrite

我在共享主机上并且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)我试过从apache_get_modules获取它,其中agi在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 个答案:

答案 0 :(得分:3)

使用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,调用类似于

    的网址

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

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

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

答案 1 :(得分:-1)

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

echo phpinfo();

并在浏览器中访问文件。