• 【PHP 】 伪静态


    原理图:

    原先浏览器输入的网址会发送到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

                                    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

    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

    RewriteRule news-([a-zA-Z]+)-id(d+).html$ news.php?type=$1&id=$2            

    #可以在这里写多个配置规则

    </IfModule>

  • 相关阅读:
    Exchanger, Changing data between concurrent tasks
    Java Concurrency
    Linux禁止ping以及开启ping的方法
    Linux内存使用消耗高
    Linux主机系统目录误操作权限修改为777修复方法
    linux磁盘空间用满的处理方法
    Linux查看实时带宽流量情况
    网站无法打开通常解决方法
    iptables的conntrack表满了导致访问网站很慢
    影响网站打开速度的因素有哪些
  • 原文地址:https://www.cnblogs.com/Answer1215/p/3151484.html
Copyright © 2020-2023  润新知