我在共享主机上并且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不存在,但我需要这样写是为了表明某人。
任何团体都知道如何检查这个完成。
谢谢
答案 0 :(得分:3)
使用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
,调用类似于
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();
并在浏览器中访问文件。