其实这部分内容在《【ThinkPHP】ThinkPHP下载、部署,Helloworld,消除难看的index.php》(点击打开链接)已经实现了,只是当时没有意识到其实对于网站下的所有php,都是可以将原本是http://xxx.com/1.php搞成http://xxx.com/1.html,这样一来便于搜索引擎的收录,二来别人不知道你的网站是用什么语言写的。
这部分也是php静态化、URL重写的内容。
一、打开Apache2.4服务器的URL重写功能
1、打开Apache2.4服务器中的httpd.conf,httpd.conf在类似C:\Apache24\conf这个位置。如下图,搜索mod_rewrite.so,大约158行的位置,删除前面的#,让Apache2.4加载了mod_rewrite.so模块
2、继续在httpd.conf配置文件找到“AllowOverride None”将None改为 All。这点值得注意的是,“AllowOverride None”在文件中能找到几处,但要改的却只有一处,如下图,就是在第267行左右的位置,这个AllowOverride None。
之后Apache2.4就弄完了,支持url重写了,重启一下Apache2.4生效。
二、对相关的php站点的url进行重写1、利用控制台cmd新建一个没有文件名的.htaccess文件,由于这个文件没有这个文件名,在windows中必须通过控制台新建。
输入如下命令,先用cd命令进入此目录,再用type nul>.htaccess新建。
如下图,就是在myTP这个php站点成功建立了一个.htaccess文件
新建完毕,用记事本或者notepad++之类的打开此.htaccess输入如下内容,保存退出:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)\.html$ $1.php [NC] </IfModule>
如果通过.html进入,浏览器地址栏显示的是.html扩展名,但服务器上实际执行的是.php。
必须保证服务器上有对应的.php,否则会404
浏览器和搜索引擎可以同时通过.htm和.php访问网页
如果该目录上存在.html,将被忽略
[NC]表示“不区分大小写”。
如下图,这是我的php站点:
里面并没有helloworld.html,仅有如下的一个helloworld.php:
<?php echo "Hello world!"; ?>
而关于Get参数,在如上配置.htaccess之后同样可以传递,比如在《【php】php中获取任意个参数》(点击打开链接)介绍过了的numUndefindParameter.php:
<?php $paramstr=$_SERVER['QUERY_STRING'];//获取参数字符串 $arr = explode("&",$paramstr);//先根据&这个字符分割一个个参数存入数组$arr foreach($arr as $element){//再遍历$arr这个数组 $arr2= explode("=",$element);//对其中的每一个元素进行根据=进行分割,再存入数组 echo "${arr2[0]}的值为:${arr2[1]}";//=前面的字符串是参数名,后面的字符串是参数值 echo "<br/>"; } ?>