Apache配置PHP环境并且重写去除入口文件index.php
问题描述:本人因为之前安装了Apache服务,现在由于开发了PHP的系统,需要部署在该机器上运行,所以就采用Apache来进行解析,如何安装Apache服务器可以参考本人的另外一篇博客(点击链接访问)。原声的Apache服务是不安装PHP的解析环境的,所以需要我们自己配置一下PHP的运行环境。另外,当PHP环境安装好以后,如果我们想访问一个域名或者IP的时候,不想自己去填充index.php,那么我们可以使用重写的方式去去除入口文件index.php,下面我就介绍一下具体的解决方案。
解决方案:
1.去PHP的官网下载相应PHP版本的安装文件(下载地址:https://windows.php.net/download/):
可以选择相应的版本,我选择的是PHP 5.6 Thread Safe,至于 线程安全还是不安全版本之间的区别请参考官网的介绍
2.下载完成后,将其解压,将解压后的文件置于Apache的conf文件夹下,当然我是觉得这样放置比较好,日后修改配置是容易找到,当然,因人而异。解压后文件目录如下图所示:
3.将PHP安装目录加载到Apache的配置文件中:先找到php5apache2_4.dll的安装位置(以PHP5.6为例,如果是PHP7,则是php7apache2_4.dll的安装位置)打开Apache的安装目录下的conf/httpd.conf文件,找到LoadModule模块,在其最下方,加入如下配置语句:
#加载php模块,用来处理php文件
LoadModule php5_module C:/server/Apache24/conf/php-5.6.38-Win32-VC11-x64/php5apache2_4.dll
4.继续添加配置,让Apache识别可以识别PHP文件,在上面语句下面继续加入如下语句:
#让apache识别php文件
AddType application/x-httpd-php .php .html .htm
5.然后把PHP配置文件中的php.ini-development文件复制一份,在同级目录下重命名为php.ini,如下图:
6.继续将php.ini文件的路径配置到conf/httpd.conf文件中:在conf/httpd.conf文件中添加如下配置语句:
phpinidir C:/server/Apache24/conf/php-5.6.38-Win32-VC11-x64/php.ini
7.开启PHP扩展动态库目录:打开php.ini文件,在其中搜索extension_dir,把分号去掉,把PHP安装目录下的ext文件夹路径添加进去,即输入如下语句:
extension_dir = "C:/server/Apache24/conf/php-5.6.38-Win32-VC11-x64/ext"
8.开启一些必须的拓展,具体的含义不再赘述,可以参考下图:
温馨提示: ;在该配置文件中是注释的意思
9.下面就是配置重写的模块了,首先在conf/httpd.conf配置文件中加载mod_rewrite.so模块 ,找到一下语句,去掉前面的#
LoadModule rewrite_module modules/mod_rewrite.so
10.将conf/httpd.conf文件中的AllowOverride None都改为AllowOverride All
11.在conf/httpd.conf文件中<IfModule dir_module>中修改为一下语句:
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
温馨提示:index.html和index.php之间是空格,不是“,”,一定要注意,否则就会出现localhost访问项目是出现项目文件目录的情况,而使用localhost/index.php时才可以正常访问。
12.重启Apache服务,即可生效
13.PHP项目文件配置,确保项目文件中URL_MODEL设置为2, (url重写模式),在项目文件中加入一下代码,使用框架的要依据框架的规则进行修改,答案不唯一:
return Array(
‘URL_MODEL’ => ’2′,
);
14.新建 .htaccess 文件,将一下语法写到其中,并将其置于项目根目录下:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
好的,到这里我们的任务就完成了,在浏览器里面访问localhost就可以出现我们所想要看到的页面了。
如果想域名映射项目,部署多个PHP项目或者Apache转发Tomcat项目,可以参考我的另外一篇博客:Apache配置多站点域名访问,并反向代理到Tomcat项目
题主只是一个入门的小学生,希望大家多多指教!如果该帖子确实能解决您的问题,望多多留言,谢谢!