美文网首页
apache重写规则

apache重写规则

作者: 牵小马过河 | 来源:发表于2017-07-25 15:38 被阅读0次

前两天部署一个项目到本机环境,从nginx转到apache,因为不熟悉apache的重写规则,给自己挖了很多坑。。看了很多博客后,终于解决了问题,总结如下。

什么是url重写?

url重写可以把冗长的url地址按我们自定义的规则来简化。比如一个类似 www.test.com?user_id=123&user_ps=abc 的域名,通过url重写,我们直接以 www.test.com/123/abc 的方式来访问。这样是不是简洁多了?这样既可以增强seo,同时也可以处理形如访问url不存在的问题。

启动url重写的步骤如下

1、打开apache/conf目录下的httpd.conf,找到

#LoadModule rewrite_module modules/mod_rewrite.so

将最前面的#去掉

2、找到

<Directory /> 

 AllowOverride NONE   

 Require all granted

</Directory>

改成

<Directory />

AllowOverride ALL  

Require all granted

</Directory>

3、在项目根目录下创建 .htaccess 文件,在该文件中输入(windows下无法直接创建。htaccess文件,可先新建记事本,再另存为)

<IfModulemod_rewrite.c>

Options Indexes FollowSymlinks

RewriteEngine On                                                        #启动重写引擎

RewriteCond %{REQUEST_FILENAME} !-d               #判断请求文件是否为目录

RewriteCond %{REQUEST_FILENAME} !-f               #判断请求文件是否为文件

RewriteRule ^(.*)$ index.php/$1                              #重写规则,用正则表达式

</IfModule>

以上即为启用url重写的步骤,接下来具体介绍一下.htaccess文件中各字段的意义和属性。

Options Indexes FollowSymLinks就表示:我访问www.test.com,如果文件根目录里有 index.html(index.php),浏览器就会显示 index.html的内容,如果没有 index.html,浏览器就会显示这文件根目录的目录列表,目录列表包括文件根目录下的文件和子目录。

考虑到安全问题,不想让别人访问到目录文件,应该怎么办呢?只需要将Indexes字段删掉即可。再次访问该域名,如果不存在index.html或者index.php文件,则会报403错误。

RewriteEngin On表示启用重写引擎,将On改为Off即可关闭重写引擎,方便我们启动或关闭重写引擎,而无需修改大量代码。

RewriteCond表示重写条件,类似于if条件语句,一般形式为    RewriteCond %{XXXXXXX} + 正则匹配条件    ,可以多条RewriteCond对应一条RewriteRule

RewriteRule 表示重写规则,一般形式为  RewriteRule 正则匹配条件  XXXXXX ,上文的

RewriteRule ^(.*)$ index.php/$1

表示将任意请求改成index.php/$1,其中$1表示正则表达式中第一个()中的值。

对于AllowOverride All,表示允许.htaccess覆写httpd.conf中的设置,如果想禁止.htaccess起作用 ,将All改成none就可以了

在这里对.htaccess的利弊做一些补充

当我们是与其他人共享服务器的情况下,我们可能无法直接修改服务器的配置,通过.htaccess可方便我们对服务器进行修改,且不会干预到他人。但这样做会导致性能降低,理由如下:

一个.htaccess文件是对当前目录及其子目录起作用的,也就是说当我们访问一个文件时,服务器不仅要从检查当前目录下的.htaccess文件,还要检查其父目录的,很有可能还要检查其祖父级目录的,无论这些目录中.htaccess文件是否存在,这样就可能有很多次的访问是没有必要的,影响了性能。

所以如果可以,尽可能直接修改httpd.conf文件,具体的语法与.htaccess文件中的语法是一样的。

相关文章

  • apache重写规则

    1、简介 Apached的重写功能,即是mod_rewrite模块功能,它是apache的一个模块。它的功能非常强...

  • apache重写规则

    Aapache重写规则 .htaccess叫分布式配置文件,.htaccess文件的作用在于当浏览器通过uri访问...

  • apache重写规则

    前两天部署一个项目到本机环境,从nginx转到apache,因为不熟悉apache的重写规则,给自己挖了很多坑。。...

  • 开启apache重写规则

    在开发时,为了让URL看起来更高大上一点,那么开启apache的重写,是非常重要的! 第一步: 开启rewrite...

  • apache nginx tomcat iis 禁用OPTION

    一、Apache使用Apache的重写规则来禁用Options方法和Trace方法 在Apache配置文件http...

  • 重写规则

    重写规则 【重写规则的作用范围】 可以使用在Apache主配置文件httpd.conf中 可以使用在httpd.c...

  • 创建 yaf 项目目录及文件(windows)

    yaf 项目目录结构 入口文件:public/index.php apache 重写规则文件:public/.ht...

  • Apache Rewrite 初学记录

    原文链接:Apache Rewrite 中文详解 这几天一直在研究Apache的重写规则,虽然网上有很多教程,不过...

  • 搭建REST风格的服务器

    今天购入阿里云,然后准备在阿里云上搭建rest风格的API,首先就是URL规则重写 1、URL重写 在apache...

  • APACHE 重写规则(mod_rewrite)

    看了一些关于.htaccess,apache重写url的规则,一般都写得很清楚。但是对于我一个小白,感觉要挖的东西...

网友评论

      本文标题:apache重写规则

      本文链接:https://www.haomeiwen.com/subject/zvvwkxtx.html