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>

  • 相关阅读:
    uniapp中uni.setNavigationBarTitle(OBJECT) 动态设置当前页面的标题。
    vuex的安装
    创建vue项目
    方法
    element-ui的tree组件的使用
    vue树形组件tree遇到的坑
    vuex持久化 vuex-persistedstate
    vuex持久化 vuex-persistedstate,解决刷新跳转到登录页的问题
    How to view file history in Git?
    浏览器里查看请求头
  • 原文地址:https://www.cnblogs.com/red-code/p/5316751.html
Copyright © 2011-2022 走看看