首先在apache2配置目录中建立虚拟主机配置文件如下
ServerName gzshes.localhost
DocumentRoot "/var/www/gzshes"
DirectoryIndex index.html index.php
Options Indexes FollowSymLinks ExecCGI
AllowOverride All
Require all granted
#下面为URL静态重写环境的配置,也就是根据正则表达式规则重写一些URL链接,以实现静态html文件的效果,便于搜索引擎爬虫收录,简称 URL重写伪静态环境
RewriteEngine On
RewriteRule ^(.*)/archiver/((fid|tid)-[\w\-]+\.html)$ $1/archiver/index.php?$2
RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay.php?fid=$2&page=$3
RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2&extra=page\%3D$4&page=$3
RewriteRule ^(.*)/space-(username|uid)-(.+)\.html$ $1/space.php?$2=$3
RewriteRule ^(.*)/tag-(.+)\.html$ $1/tag.php?name=$2
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
其次在站点根目录中新建.htaccess文件如下
SetHandler application/x-httpd-php-cgi
AddType application/x-httpd-php-cgi .php
Action application/x-httpd-php-cgi "/php53/php-cgi"
作用是把php文件添加标记 application/x-httpd-php-cgi;然后根据网站根目录.htaccess文件调用不同的解释器。
比如我的gzshes.cn站点调用的就是php-5.3.17,对应下面面ScriptAlias /php53/
/usr/local/bin/,意思是脚本别名为/php53/的解释器为/usr/loca//bin
中,又因为网站根目录中配置了.htaccess文件,里面定义了对应于如何解释带有application/x-httpd-php-cgi标记的脚本
文件,这里就是调用脚本别名/php53/目录中的php-cgi解释器,这是php编译的CGI模式执行文件,对于虚拟主机目录中所有的php文
件apache会自动调用/usr/local/bin/php-cgi来解释运行。
要支持.htaccess文件需要在apach配置文件/etc/apache2/apache2.conf中修改如下
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
还要添加如下内容以设置正确的解释器别名,
ScriptAlias /php53/ /usr/local/bin/
ScriptAlias /php56/ /usr/bin/
不过另外要提醒的一个是权限问题,假如碰到如下所示
Forbidden
You don't have permission to access /php53/php-cgi/phpinfo.php
on this server.
Apache/2.4.12 (Ubuntu) Server at gzshes.localhost Port 80
那基本可以说明我们的配置已经生效了,但是存在权限问题。我也因为这个问题折腾了半天多,检查了很多遍也不知道是哪里的权限问题,后来偶然间就怀疑是不是根目录权限问题,因为子目录我已经设置了权限,再把 / 根目录设置为 Require all granted后问题立马解决,问题果然是根目录权限不对。原来单纯设置子目录权限还不行,还必须它的父目录也有正确的权限
Options FollowSymLinks
AllowOverride None
# Require all denied
Require all granted
AllowOverride None
Require all granted
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
#
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#