我在共享主机上,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内部服务器错误,可能是因为重写引擎不在那里,但我需要写这篇文章来向某人展示。
任何人都知道如何检查完成这项工作。
感谢
使用PHP CGI,没有简单的方法可以确定服务器上是否有mod_rewrite。
因此,您需要通过对服务器进行测试调用来找到它。对于这种方法,可以使用以下步骤
-
在服务器上创建一个名为
mod_rewrite_test
的目录。 -
在该目录中添加
.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
目录的任何请求。 -
在同一目录中创建一个名为
mod_rewrite_test.txt
的文件。将ok
写入该文件并保存。 -
现在,在php脚本中使用
CURL
,调用类似于的URLhttp://www.your-domain.com/mod_rewrite_test/test.php并检查响应。
因此,根据我们的
.htaccess
代码,如果mod_rewrite处于活动状态并在服务器上工作,它将返回CCD_ 13文件即CCD_。否则,它将返回404-未找到页面错误。
要检查mod_rewrite模块是否已启用,请在服务器的根文件夹中创建一个新的php文件。输入以下
echo phpinfo();
并在浏览器中访问文件。