原理图:

原先浏览器输入的网址会发送到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. 伪静态的基本使用的更多相关文章

  1. MVC4设置伪静态---路由伪静态

    有些客户要求设置静态的,为了完成需求,而且更简单的做法就是设置伪静态,例如:http://localhost:80/Home/Index.html ,也可以访问http://localhost:80/ ...

  2. 伪静态 net-IIS伪静态配置,使用URLRewriter实现伪静态

    https://www.cnblogs.com/zhenzaizai/p/10364343.html 前段时间开发公司官网,用到了URLRewriter实现伪静态,在VS调试模式下没有任何问题,部署到 ...

  3. mvc伪静态<四> 伪静态后静态页面或者引用的css和图片失效

    引用的css和图片失效的解决办法 把样式引用文件的相对路径改成绝对路径就可以了 比如原先的引用路径为:<link href="~/Content/css/style.css" ...

  4. C#实现动态网站伪静态,使seo更友好

    本教程将使用Visual Studio 2013手把手教你实现webform动态页面的伪静态.本教程配套的C#源码工程可通过我的github下载.地址:https://github.com/shell ...

  5. shopnc B2B2C商城 Nginx下开启伪静态

    B2B2C商城 Nginx下开启伪静态,伪静态开启后,对系统的SEO极为有利,可以最大限度让商城页面被搜索引擎抓取,但在实际安装中,很多客户在这块都会遇到各种各样的问题. 1. 编辑商城配置文件(da ...

  6. [PHP] PHP初学者想了解"伪静态",必须看这个贴 [复制链接] [推荐]

    一.何为“伪静态”? 以传智播客bbs论坛为例,这篇帖子的链接地址原本应该是“http://bbs.itcast.cn/forum.php?mod=post&action=newthread& ...

  7. WIN8 、WIN7 下IIS7.5、IIS8 的rewrite 伪静态功能设置方法

    原文 WIN8 .WIN7 下IIS7.5.IIS8 的rewrite 伪静态功能设置方法 win7和win8系统都自带有iis的功能.关于IIS的安装,上一篇已经讲述,这里就不重复了. 下面说下在w ...

  8. Nginx/Apache之伪静态设置 - 运维小结

    一.什么是伪静态伪静态即是网站本身是动态网页如.php..asp..aspx等格式动态网页有时这类动态网页还跟"?"加参数来读取数据库内不同资料,伪静态就是做url重写操作(即re ...

  9. ASP.NET MVC5实现伪静态

    目录 1.什么是伪静态?为什么要实现伪静态? 2.实现APS.NET MVC伪静态的方式有哪些? 3.那么如何实现使用ASP.NET MVC5的伪静态呢? (1)在路由注册中启用特性路由 (2)为需要 ...

随机推荐

  1. BZOJ 1951SDOI2010 古代猪文

    真是到很强的数学题 先利用欧拉定理A^B %p=A^(B%φ(p)+φ(p) ) %p 然后利用卢卡斯定理求出在modφ(p)的几个约数下的解 再利用中国剩余定理合并 计算答案即可 By:大奕哥 #i ...

  2. 【推导】【贪心】Codeforces Round #472 (rated, Div. 2, based on VK Cup 2018 Round 2) D. Riverside Curio

    题意:海平面每天高度会变化,一个人会在每天海平面的位置刻下一道痕迹(如果当前位置没有已经刻划过的痕迹),并且记录下当天比海平面高的痕迹有多少条,记为a[i].让你最小化每天比海平面低的痕迹条数之和. ...

  3. CentOS下重新安装yum的方法

    不小心误删除了VPS下面的yum,大家都知道yum在linux中是很重要的一个功能,软件的下载,系统的更新都要靠他.没有yum,系统基本处于半残废状态. yum的安装操作: 在SSH里面依次输入下面的 ...

  4. js的继承实现方式

    1. 使用call或者apply来实现js对象继承 function Animal(age){ this.age = age; this.say = function(){ console.log(' ...

  5. Linux服务器性能检测命令集锦

    uptime $ uptime 23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.02 这个命令可以快速查看机器的负载情况.在Linu ...

  6. PYQT窗口居中

    #UI.py,通过UI设计师制作后直接转换为UI.py脚本 # -*- coding: utf-8 -*-from PyQt4 import QtCore, QtGui try:    _fromUt ...

  7. CDOJ 1401 谭爷的黑暗沙拉 数学

    谭爷的黑暗沙拉 题目连接: http://mozhu.today/#/problem/show/1401 Description 谭爷有\(n\)种不同种类的食材(水果&蔬菜),他想做出一份总 ...

  8. CentOS 7挂载磁盘提示: mount: unknown filesystem type 'LVM2_member'

    说明:CentOS 7采用新的分区格式xfs以及LVM的模式,造成挂载硬盘的方式有变化. 解决: 使用lvdisplay命令查看LVM最终的卷路径,然后再进行挂载. 比如: mount /dev/Vo ...

  9. WPF中的ImageBrush常用方式

    WPF的ImageBrush是一个比较常见也比较复杂的笔刷,它继承自图块笔刷(TileBrush).使用图块画笔绘制区域涉及以下三个组成部分:内容.基本图块和输出区域.基本输出过程如下图所示: 其中, ...

  10. 在一台服务器上搭建多个项目的SVN

    需求:一台机子,多个项目,项目之间用户独立不可以相互访问文件 思路:在机子上设置多个代码仓库,用不同的端口号加一区分 实现: 首先安装SVN,我这里使用的是TortoiseSVN 首先创建多个SVN代 ...