zoukankan      html  css  js  c++  java
  • 在Apache中使用mod_rewrite模块重写URL

    如果有使用第三方框架做项目时,url路径是可以同过框架给的方法来设定的(如thinkphp),但如果使用原生php写的项目又想重写url,则可通过apache的一些设置来达到想要的效果。

    在更改apache的配置之前,应该先了解一些apache的知识:apache中的Directory标签的作用是用于标记我们如何在特定目录订制apache的行为。该标签里会有一个绝对路径,该路径就是你想订制行为的目录。

    总体通过apache修改URL的思路就是,在.htaccess文来中对你想要重写的url地址进行重写。步骤如下:

    (1)现在服务器的httpd.conf文件中开启重写.htaccess的权限,将下列代码添加到httpd.conf文件中

    <Directory ".htaccess文件所在路径">

      AllowOverride All

    </Directory>

    (2)关于.htaccess文件的存放位置:假如你之前的访问路径为:域名/car_project/index.php

      明显,这个路径访问的是car_project文件夹中的index.php文件,所以你要是想重写该路径,你就应该将.htaccess文件放到car_project文件夹中。

    (3)之后再将.htaccess文件将里面的重写引擎开启,在. htaccess文件中加入下列代码

    <IfModule mod_rewrite.c>

    RewriteEngine on

    </IfModule>

    (4)之后我们需要在IfModule标签中设定“重定向匹配需要应用的URL基本地址”,指令为RewriteBase,例子如下:

    RewriteBase /demo/

    而我们现在正在使用的地址是:http://localhost/demo/

    (5)在IfModule标签里写入RewriteRule指令后,就可以对url进行重写了,比如可以在标签中加入下列代码:

    RewriteRule somepage.php otherpage.php

    这代表任何人访问somepage.php页面,实际显示的是otherpage.php页面

    同理,我们还可以使用正则表达式来对输入URL参数的方式进行重写(在这就不对正则表达式进行展开详解了)

    (6)如此,现在httpd.conf文件和.htaccess文件中应该有如下实例代码:

    httpd.conf文件中:

    <Directory ".htaccess文件所在绝对路径">

      AllowOverride All

    </Directory>

    .htaccess文件中:

    <IfModule mod_rewrite.c>

    RewriteEngine on

    RewriteBase /demo/

    RewriteRule somepage.php otherpage.php

    </IfModule>

  • 相关阅读:
    Spring中依赖注入的四种方式
    使用 EasyMock 更轻松地进行测试
    HDU2196 Computer(树形DP)
    BZOJ2125: 最短路(圆方树)
    虚树入门
    BZOJ2286: [Sdoi2011]消耗战(虚树/树形DP)
    Codeforces Round #487 (Div. 2)
    Educational Codeforces Round 45 (Rated for Div. 2)
    BZOJ3675: [Apio2014]序列分割(斜率优化)
    BZOJ2761: [JLOI2011]不重复数字(map)
  • 原文地址:https://www.cnblogs.com/red-code/p/5316751.html
Copyright © 2011-2022 走看看