如何在 PHP CGI 上检查 mod_rewrite

Posted

技术标签:

【中文标题】如何在 PHP CGI 上检查 mod_rewrite【英文标题】:How to check for mod_rewrite on PHP CGI 【发布时间】: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 不存在,但我需要写给别人看。

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

谢谢

【问题讨论】:

【参考方案1】:

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

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

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

    在这个目录下添加.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目录的任何请求。

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

    现在,在你的 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();

并在浏览器中访问文件。

【讨论】:

以上是关于如何在 PHP CGI 上检查 mod_rewrite的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Centos 7 上将 php 从 cgi-fcg 更改为 php cli

linux服务器上运行PHP,除了PHP-FPM还有其他的方式吗

请问windows下如何管理php-cgi进程

CGI FASTCGI php-fpm

什么是CGI,FastCGI,PHP-CGI,PHP-FPM,Spawn-FCGI

如何检查 Perl-CGI 应用程序中的所有错误(例如,使用 Perl 编译器或类似 lint 的工具检查,免费开源?)