php配置rewrite模块

Posted 凝荷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php配置rewrite模块相关的知识,希望对你有一定的参考价值。

(1)    启用rewrite模块,在默认情况下,没有启用

修改httpd.conf文件

#启动rewrite模块

LoadModule rewrite_module modules/mod_rewrite.so

 

确认是否启动成功

<?php phpinfo();?>

(2)    配置我们的虚拟主机

httpd.conf 打开虚拟主机的配置文件

 

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

 

修改 httpd-vhost.conf

<VirtualHost *:80>

    DocumentRoot "C:/myenv/apache/htdocs/static2"

    #Directory配置节点,用于指定该目录下的文件或是图片.的访问权限

    #设置虚拟主机的错误页面,欢迎页面

    <Directory "C:/myenv/apache/htdocs/static2">

    </Directory>

</VirtualHost>

(3)    在hosts文件中,配置ip和主机的对应关系

127.0.0.1 www.hsp.com

(4)    这时我们访问 http//www.hsp.com/news.php

 

我们可以访问到该页面.

 

? 一个重要的知识点:

在apache服务器中,如果某个文件夹,没有指定访问权限,则以上级目录的权限为准,如果他自己指定了访问权限,则以自己的为准.

 

 

请注意,在配置访问权限的时候,顺序很重要:

#Order allow,deny 表示先看allow ,在看deny,留下的就是可以访问

    Order deny,allow

    Deny from all

    allow from 127.0.0.1

 

(5)    关于<Directory> 节点配置必须掌握

比较完整的配置文件

第一种配置方式

<VirtualHost *:80>

    DocumentRoot "C:/myenv/apache/htdocs/static2"

    #Directory配置节点,用于指定该目录下的文件或是图片.的访问权限

    #设置虚拟主机的错误页面,欢迎页面

    ServerName www.hsp.com

    <Directory "C:/myenv/apache/htdocs/static2">

       #这里可以指定是否让人访问

       #Allow from all

       #是否列出文件目录结构

       # 如果希望列出 indexes 不希望 none

       #Options indexes

       #如何配置网站的首页面

       DirectoryIndex abc.html abc2.html

       #如何配置404错误页面,引导用户引入新页面

       errorDocument 404 /404.html

       #配置我们的rewrite规则

       RewriteEngine On

       #rewrite的规则 如果 aaa.html 就跳转到news.php

       #$1 表示反向引用,第一个子表达式的内容

       #说明如果在正则规范中直接引用子表达式的内容,则使用\n

       #如果是在后面因为,则使用$n

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

    </Directory>

</VirtualHost>

 

特别说明: 容易犯的错误,一定要记住启用rewrite模块.

 

 

思考: 上面我们配置都要去修改 httpd-vhost.文件,但管理员不给你这个权限,怎么办?

思路: 可以把配置,写到 .htaccess文件.

 

第二种配置方式: 即把一部分配置放在 http-vhost.conf 文件, 把rewrite 规则放在 .htaccess

<VirtualHost *:80>

    DocumentRoot "C:/myenv/apache/htdocs/static2"

    #Directory配置节点,用于指定该目录下的文件或是图片.的访问权限

    #设置虚拟主机的错误页面,欢迎页面

    ServerName www.hsp.com

    <Directory "C:/myenv/apache/htdocs/static2">

       #这里可以指定是否让人访问

       #Allow from all

       #是否列出文件目录结构

       # 如果希望列出 indexes 不希望 none

       #Options indexes

       #如何配置网站的首页面

       DirectoryIndex abc.html abc2.html

       #如何配置404错误页面,引导用户引入新页面

       errorDocument 404 /404.html

       #如果你配置了allowoverride all 这表示到对应的目录的.htaccess去匹配规则

       allowoverride all

    </Directory>

</VirtualHost>

 

在对应的文件下 .htaccess文件

<IfModule rewrite_module>

#如果rewrite 模块启用

#配置我们的rewrite规则

RewriteEngine On

#rewrite的规则 如果 aaa.html 就跳转到news.php

#$1 表示反向引用,第一个子表达式的内容

#说明如果在正则规范中直接引用子表达式的内容,则使用\n

#如果是在后面因为,则使用$n

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

#RewriteRule aaa.html  news.php

</IfModule>

 

请注意: 项目中的 .htaccess文件的配置也是继承管理

 

第三种配置方法:

http-vhost.conf

<VirtualHost *:80>

    DocumentRoot "C:/myenv/apache/htdocs/static2"

    #Directory配置节点,用于指定该目录下的文件或是图片.的访问权限

    #设置虚拟主机的错误页面,欢迎页面

    ServerName www.hsp.com

    <Directory "C:/myenv/apache/htdocs/static2">

       #如果你配置了allowoverride all 这表示到对应的目录的.htaccess去匹配规则

       allowoverride all

    </Directory>

</VirtualHost>

 

.htacces文件

 

#这里可以指定是否让人访问

       #Allow from all

       #是否列出文件目录结构

       # 如果希望列出 indexes 不希望 none

       #Options indexes

       #如何配置网站的首页面

       DirectoryIndex abc.html abc2.html

       #如何配置404错误页面,引导用户引入新页面

       errorDocument 404 /404.html

<IfModule rewrite_module>

#如果rewrite 模块启用

#配置我们的rewrite规则

RewriteEngine On

#rewrite的规则 如果 aaa.html 就跳转到news.php

#$1 表示反向引用,第一个子表达式的内容

#说明如果在正则规范中直接引用子表达式的内容,则使用\n

#如果是在后面因为,则使用$n

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

#RewriteRule aaa.html  news.php

</IfModule>

 

以上是关于php配置rewrite模块的主要内容,如果未能解决你的问题,请参考以下文章

LAMP(php动态扩展模块,httpd的rewrite,php错误日志,php.ini配置详解)

Ubuntu Apache配置及开启mod_rewrite模块

PHP扩展模块Apache之rewrite模块

ThinkPHP 利用.htaccess文件的 Rewrite 规则隐藏URL中的 index.php

在Apache中使用mod_rewrite模块重写URL

5.6 Nginx Rewrite模块配置