我正在使用共享的networking托pipe服务。 运行phpinfo,我可以看到Server API显示CGI / FastCGI而不是Apache 2 Handler。
在这篇文章中: http : //docs.joomla.org/Should_PHP_run_as_a_CGI_script_or_as_an_Apache_module%3F
它说'如果你的服务器被configuration为以PHP模式运行PHP,那么你可以select使用php.ini或Apache .htaccess文件,但是,如果你的服务器在CGI模式下运行PHP,那么你将只有因为Apache已经不再完全控制PHP了,所以select在本地使用php.ini文件来更改设置。
我觉得奇怪的是我创build的.htaccess中的重写规则在CGI模式下运行的时候一直很好。 为什么发生这种情况?
这个问题并不是Apache的重写规则在.htaccess文件中运行PHP时,不能像CGI和Apache模块一样运行。 这只是你不能使用.htacess文件来设置作为CGI运行时的PHP值。 相反,您必须有一个单独的php.ini文件,其中的设置已更改。 在我自己的共享主机帐户中,它将PHP作为CGI运行,我使用FastCGI并在我的.htaccess文件中具有以下内容:
<IfModule !mod_php.so> AddHandler myphp-script .php Action myphp-script /cgi-bin/myphp.fcgi </IfModule>
然后在我的accounts /cgi-bin/目录下,我放置了带有chmod 755的myphp.fcgi脚本,其中包含:
#!/bin/sh # This ensures PHP doesn't try to run it's own # process manager. export PHP_FCGI_CHILDREN=0 # Execute PHP with my php.ini config file exec /path/to/system/cgi-bin/php -c ~/myconf/php.ini
在我的.htaccess文件中,我仍然有一个<IfModule mod_rewrite.c>节来处理一些旧的URIpath到新的URI结构,以维护在search引擎中caching的旧链接。