【PHP 】 伪静态 - 3. 伪静态的基本使用
原理图:
原先浏览器输入的网址会发送到apache服务器,然后apache会调用php模块来处理,最后找到你所想访问的页面; 如果在apahce, httpd.conf文件中开启rewrite机制,则apache会去查看可以匹配的规则,然后解析用户所输入的伪静态地址找到所想访问的php页面。

步骤开始:
1. 启用rewrite模块,在默认的情况下是没有启用的。
修改httpd.conf文件:LoadModule rewrite_module modules/mod_rewrite.so
确认是否启动成功<?php phpinfo();?>
2. 配置虚拟主机
第一种配置方式
http.conf的配置文件,打开它。
然后去修改http-vhost.conf文件:
<VirtualHost *:80>
DocumentRoot "C:/myPHP/htdocs/bigwebsite/staticPage/hsp"
ServerName hsp.com
<Directory>
#Directory配置节点,用于指定该目录下的文件或者是图片的访问权限
#设置虚拟主机的错误页面,欢迎页面
</Directory>
</VirtualHost>
3. 在hosts文件中配置ip和主机的对应关系
127.0.0.1 hsp.fi
4. 这时我们访问, hsp.fi/new.php
我们可以访问到页面.
一个重要的知识点:
在apache服务器中,如果某个文件夹,没有指定访问权限,则以上级目录的权限为准,如果他自己指定了访问权限,则以自己的权限为准。
在httpd.conf文件中可以看到htdocs的访问权限是Allow from all, 如果设置htdocs 的访问权限为Deny from all, 并且不设定虚拟主机文件夹的访问权限,则这个文件夹就不能被访问到。但是,如果设置文件夹的访问权限为Allow from all,就可以访问到了,这是根据子目录为准的。
如果想不让别人访问,但是允许自己访问,可以这样配置:
Order allow, deny // 这句话的意思是先看allow,再看deny
allow from 127.0.0.1
deny from all
如果想放行一个网段:
allow from 192.168.1
|
<VirtualHost *:80> DocumentRoot "C:/myPHP/htdocs/bigwebsite/staticPage/hsp" ServerName hsp.fi <Directory "C:/myPHP/htdocs/bigwebsite/staticPage/hsp"> #Directory配置节点,用于指定该目录下的文件或者是图片的访问权限 #设置虚拟主机的错误页面,欢迎页面 #这里可以指定是否让人访问, 如何这里没有指定访问的权限,则和上级目录的访问权限相同 #Deny from all #不希望别人访问目录结构none, 如果允许别人访问则为Options indexes Options none </Directory> </VirtualHost> |
如何配置网站的欢迎页面
|
<VirtualHost *:80> DocumentRoot "C:/myPHP/htdocs/bigwebsite/staticPage/hsp" ServerName hsp.fi <Directory "C:/myPHP/htdocs/bigwebsite/staticPage/hsp"> #Directory配置节点,用于指定该目录下的文件或者是图片的访问权限 #设置虚拟主机的错误页面,欢迎页面 #这里可以指定是否让人访问, 如何这里没有指定访问的权限,则和上级目录的访问权限相同 #Deny from all #不希望别人访问目录结构, 如果允许别人访问则为Options indexes Options indexes #配置首页面,如果abc.html没有则访问abc2.html DirectoryIndex abc.html abc2.html </Directory> </VirtualHost> |
如何配置404错误页面,引导用户进入新的页面
|
<VirtualHost *:80> DocumentRoot "C:/myPHP/htdocs/bigwebsite/staticPage/hsp" ServerName hsp.fi <Directory "C:/myPHP/htdocs/bigwebsite/staticPage/hsp"> #Directory配置节点,用于指定该目录下的文件或者是图片的访问权限 #设置虚拟主机的错误页面,欢迎页面 #这里可以指定是否让人访问, 如何这里没有指定访问的权限,则和上级目录的访问权限相同 #Allow from All #不希望别人访问目录结构, 如果允许别人访问则为Options indexes #Options indexes #配置首页面,如果abc.html没有则访问abc2.html DirectoryIndex abc.html errorDocument 404 /err/404.html </Directory> </VirtualHost> |
使用伪静态机制
|
<VirtualHost *:80> DocumentRoot "C:/myPHP/htdocs/bigwebsite/staticPage/hsp" ServerName hsp.fi <Directory "C:/myPHP/htdocs/bigwebsite/staticPage/hsp"> #Directory配置节点,用于指定该目录下的文件或者是图片的访问权限 #设置虚拟主机的错误页面,欢迎页面 #这里可以指定是否让人访问, 如何这里没有指定访问的权限,则和上级目录的访问权限相同 #Allow from All #不希望别人访问目录结构, 如果允许别人访问则为Options indexes #Options indexes #配置首页面,如果abc.html没有则访问abc2.html DirectoryIndex abc.html errorDocument 404 /err/404.html #开启rewrite机制 RewriteEngine On #重写rewrite rule #new-music-id100.html #$1表示反向引用,第一个子表达式的内容, 说明,如果在正则规范中直接引用表达式的内容 #则使用\n,如果是在后面引用,则使用$n RewriteRule news-([a-zA-Z]+)-id(\d+)\.html$ news.php?type=$1&id=$2 </Directory> </VirtualHost> |
特别说明:
1. 一定要记住启用rewrite模块
思考:
上面的配置我们都要去修改http-vhost文件,但管理员不给你这个权限。
解决办法:
可以把配置写到 .htaccess文件
第二种配置方法:即把一部分配置放在http-vhost.conf文件
|
<VirtualHost *:80> DocumentRoot "C:/myPHP/htdocs/bigwebsite/staticPage/hsp" ServerName hsp.fi <Directory "C:/myPHP/htdocs/bigwebsite/staticPage/hsp"> #Directory配置节点,用于指定该目录下的文件或者是图片的访问权限 #设置虚拟主机的错误页面,欢迎页面 #这里可以指定是否让人访问, 如何这里没有指定访问的权限,则和上级目录的访问权限相同 #Allow from All #不希望别人访问目录结构, 如果允许别人访问则为Options indexes #Options indexes #配置首页面,如果abc.html没有则访问abc2.html DirectoryIndex abc.html errorDocument 404 /err/404.html #如果你配置了allowoverride all这表示到对应的目录的.htaccess去匹配规则 allowoverride all </Directory> </VirtualHost> |
在对应的文件下:创建.htaccess文件(创建方法,打开记事本,另存问.htaccess文件 , 所有文件格式, 直接输入文件名是创建不起来的)
|
<IfModule rewrite_module> #如果rewrite_module启用 #开启rewrite机制 RewriteEngine On #重写rewrite rule #new-music-id100.html #$1表示反向引用,第一个子表达式的内容, 说明,如果在正则规范中直接引用表达式的内容 #则使用\n,如果是在后面引用,则使用$n RewriteRule news-([a-zA-Z]+)-id(\d+)\.html$ news.php?type=$1&id=$2 #可以在这里写多个配置规则 </IfModule> |
请注意》项目中的.htaccess文件的配置也是继承的关系,包括重写规则也是继承的。
比如我想让用户不能访问aaa文件夹下的ttt.html, 可以aaa文件夹中创建一个.htaccess配置文件,重写规则为:
deny from all
这样用户就不能访问了
第三种方案:
只在httpd-vhost.conf文件中只留下一句话:
|
<VirtualHost *:80> DocumentRoot "C:/myPHP/htdocs/bigwebsite/staticPage/hsp" ServerName hsp.fi <Directory "C:/myPHP/htdocs/bigwebsite/staticPage/hsp"> allowoverride all </Directory> </VirtualHost> |
|
然后其他的配置都放在.htaccess文件中 #Directory配置节点,用于指定该目录下的文件或者是图片的访问权限 #设置虚拟主机的错误页面,欢迎页面 #这里可以指定是否让人访问, 如何这里没有指定访问的权限,则和上级目录的访问权限相同 #Allow from All #不希望别人访问目录结构 Options none, 如果允许别人访问则为Options indexes #Options indexes #配置首页面,如果abc.html没有则访问abc2.html DirectoryIndex abc.html errorDocument 404 /err/404.html #如果你配置了allowoverride all这表示到对应的目录的.htaccess去匹配规则 <IfModule rewrite_module> #如果rewrite_module启用 #开启rewrite机制 RewriteEngine On #重写rewrite rule #new-music-id100.html #$1表示反向引用,第一个子表达式的内容, 说明,如果在正则规范中直接引用表达式的内容 #则使用\n,如果是在后面引用,则使用$n RewriteRule news-([a-zA-Z]+)-id(\d+)\.html$ news.php?type=$1&id=$2 #可以在这里写多个配置规则 </IfModule> |
【PHP 】 伪静态 - 3. 伪静态的基本使用的更多相关文章
- MVC4设置伪静态---路由伪静态
有些客户要求设置静态的,为了完成需求,而且更简单的做法就是设置伪静态,例如:http://localhost:80/Home/Index.html ,也可以访问http://localhost:80/ ...
- 伪静态 net-IIS伪静态配置,使用URLRewriter实现伪静态
https://www.cnblogs.com/zhenzaizai/p/10364343.html 前段时间开发公司官网,用到了URLRewriter实现伪静态,在VS调试模式下没有任何问题,部署到 ...
- mvc伪静态<四> 伪静态后静态页面或者引用的css和图片失效
引用的css和图片失效的解决办法 把样式引用文件的相对路径改成绝对路径就可以了 比如原先的引用路径为:<link href="~/Content/css/style.css" ...
- C#实现动态网站伪静态,使seo更友好
本教程将使用Visual Studio 2013手把手教你实现webform动态页面的伪静态.本教程配套的C#源码工程可通过我的github下载.地址:https://github.com/shell ...
- shopnc B2B2C商城 Nginx下开启伪静态
B2B2C商城 Nginx下开启伪静态,伪静态开启后,对系统的SEO极为有利,可以最大限度让商城页面被搜索引擎抓取,但在实际安装中,很多客户在这块都会遇到各种各样的问题. 1. 编辑商城配置文件(da ...
- [PHP] PHP初学者想了解"伪静态",必须看这个贴 [复制链接] [推荐]
一.何为“伪静态”? 以传智播客bbs论坛为例,这篇帖子的链接地址原本应该是“http://bbs.itcast.cn/forum.php?mod=post&action=newthread& ...
- WIN8 、WIN7 下IIS7.5、IIS8 的rewrite 伪静态功能设置方法
原文 WIN8 .WIN7 下IIS7.5.IIS8 的rewrite 伪静态功能设置方法 win7和win8系统都自带有iis的功能.关于IIS的安装,上一篇已经讲述,这里就不重复了. 下面说下在w ...
- Nginx/Apache之伪静态设置 - 运维小结
一.什么是伪静态伪静态即是网站本身是动态网页如.php..asp..aspx等格式动态网页有时这类动态网页还跟"?"加参数来读取数据库内不同资料,伪静态就是做url重写操作(即re ...
- ASP.NET MVC5实现伪静态
目录 1.什么是伪静态?为什么要实现伪静态? 2.实现APS.NET MVC伪静态的方式有哪些? 3.那么如何实现使用ASP.NET MVC5的伪静态呢? (1)在路由注册中启用特性路由 (2)为需要 ...
随机推荐
- BZOJ 1212 [HNOI2004]L语言 【AC自动机 + 背包】
题目链接[http://www.lydsy.com/JudgeOnline/problem.php?id=1212] 题意:给你一些单词,然后给出一个没有标点的文本串S,都是小写字符.现在让你求用给出 ...
- BZOJ2111 ZJOI2010排列计数
根据Pi>Pi/2可以看出来这是一个二叉树 所以我们可以用树形DP的思想 f[i]=f[i<<1]*f[i<<1|1]*C(s[i]-1,s[i<<1]),s ...
- bzoj4641 基因改造 KMP / hash
依稀记得,$NOIP$之前的我是如此的弱小.... 完全不会$KMP$的写法,只会暴力$hash$.... 大体思路为把一个串的哈希值拆成$26$个字母的位权 即$hash(S) = \sum\lim ...
- PHP7新特性 What will be in PHP 7/PHPNG
本文结合php官网和鸟哥相关文章总结: 官网:http://www.php7.ca/ https://wiki.php.net/phpng PHP7将在2015年10月正式发布,PHP7 ,将会是 ...
- SQL SERVER中获取表间主外键关系
sql server 2008中的主外键关系获取方式: 转自:http://www.cnblogs.com/ke10/archive/2012/06/11/2544655.html SELECT OB ...
- Redis Cluster笔记
Redis Cluster .0搭建与使用 介绍: 特性:使用数据分片(sharding)而非一致性哈希(consistency hashing)来实现: 一个 Redis 集群包含 个哈希槽(has ...
- tyvj 1031 热浪 最短路
热浪 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://tyvj.cn/p/1031 Description 德克萨斯纯朴的民眾们这个夏天正在遭受 ...
- nlogn 求最长上升子序列 LIS
最近在做单调队列,发现了最长上升子序列O(nlogn)的求法也有利用单调队列的思想. 最长递增子序列问题:在一列数中寻找一些数,这些数满足:任意两个数a[i]和a[j],若i<j,必有a[i]& ...
- opencv+vs2012环境搭建教程
1. 安装OpenCV和VS. 本人电脑安装的是opencv2.4.10和vs2012 2.配置环境变量 以下以win8 64位系统为例: 计算机->属性->高级系统设置->环境变量 ...
- Git_期末总结
终于到了期末总结的时刻了! 经过几天的学习,相信你对Git已经初步掌握.一开始,可能觉得Git上手比较困难,尤其是已经熟悉SVN的童鞋,没关系,多操练几次,就会越用越顺手. Git虽然极其强大,命令繁 ...