如果有使用第三方框架做项目时,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>

在Apache中使用mod_rewrite模块重写URL的更多相关文章

  1. apache中通过mod_rewrite实现伪静态页面的方法

    rewrite规则学习 我们新建一个.htaccess文件之后,就在里面写入以下内容: RewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭 Rewrit ...

  2. wdlinux中apache配置反向代理模块

    想要在.htaccess中开启反向代理功能都不行[apache中没有mod_proxy模块] .htaccess 文件内容如下 RewriteEngine On RewriteBase / Rewri ...

  3. mod_rewrite模块详解

    mod_rewrite模块提供了一个基于规则的(使用正则表达式分析器的)实时转向URL请求的引擎. 支持每个规则可以拥有不限数量的规则以及附加条件规则的灵活而且强大的URL操作机制. 此URL操作可以 ...

  4. ubuntu中apache的ssl证书配置及url重写

    一.https原理 借用网上的图(图片来源: https://www.cnblogs.com/xiohao/p/9054355.html ),用到了对称加密和非对称加密.    二.ubuntu的ap ...

  5. apache重写URL时,排除静态资源

    THINKPHP项目部署的apache 上面时,如果为了隐藏入口文件配置了重写URL,会导致将静态资源的URL也解析成Controller/Method,导致触发模块不存在 所以在URL重写配置中,需 ...

  6. 开启Apache mod_rewrite模块完全解答

    启用mod_rewrite模块 在conf目录的httpd.conf文件中找到 LoadModule rewrite_module modules/mod_rewrite.so 将这一行前面的#去掉. ...

  7. 【转】开启Apache mod_rewrite模块完全解答

    启用mod_rewrite模块在conf目录的httpd.conf文件中找到LoadModule rewrite_module modules/mod_rewrite.so将这一行前面的#去掉.2.在 ...

  8. 详解调试Apache的mod_rewrite模块

    大家都知道Apache里面的Rewrite规则是一件很蛋疼的事情,有时候只是想做一个伪静态而已,不想去研究那些复杂的规则,可官方给的规则又常常出错,出了问题我们就要调试一下,看看提交的参数被映射到了哪 ...

  9. Ubuntu系统启用Apache Mod_rewrite模块

    在终端中执行 sudo a2enmod rewrite 指令后,即启用了 Mod_rewrite 模块. 另外,也可以通过将 /etc/apache2/mods-available/rewrite.l ...

随机推荐

  1. MFC 丢失MSVCR120D.dll 丢失mfc120ud.dll

  2. 一定要学会paxos算法!

    paxos算法 http://blog.csdn.net/dellme99/article/details/14162159

  3. 【maven】 在 MyEcplise上使用maven搭建Web项目

    二.在My Ecplise上使用Maven搭建Web项目 1.新建一个maven项目   2.create一个简单的骨架 3.就像在ecplise中一样设置项目的以下配置   4.新创建的项目结构如下 ...

  4. Android自动化压力测试之Monkey Test Android常见的错误类型及黑白名单的使用方法(四)

    Android常见的错误类型有两种 1.ANR类型 1)在5秒内没有响应输入的事件(例如,按键按下,屏幕触摸) 2)BroadcastReceiver在10秒内没有执行完毕 2.Crash类型 1)异 ...

  5. Android 插件化 动态升级

    最新内容请见原文:Android 插件化 动态升级 不少朋友私信以及 Android开源交流几个 QQ 群 中都问到这个问题,这里简单介绍下 1.作用 大多数朋友开始接触这个问题是因为 App 爆棚了 ...

  6. 解决Kali Linux没有声音

    解决Kali Linux没有声音   Kali Linux系统默认状态下,root用户是无法使用声卡的,也就没有声音.启用的方法如下: (1)在终端执行命令:systemctl --user enab ...

  7. c#中ref和out 关键字

    问题:为什么c#中要有ref和out?(而java中没有)需求假设:现需要通过一个叫Swap的方法交换a,b两个变量的值.交换前a=1,b=2,断言:交换后a=2,b=1. 现编码如下: class ...

  8. 后缀数组 POJ 2217 Secretary

    题目链接 题意:求两个字符串的最长公共子串 分析:做法是构造新的串是两个串连接而成,中间用没有出现的字符隔开(因为这样才能保证S的后缀的公共前缀不会跨出一个原有串的范围),即newS = S + '$ ...

  9. BestCoder Round #65

    博弈 1002 ZYB's Game 题意:中文 分析:假定两个人是绝顶聪明的,一定会采取最优的策略.所以如果选择X的左边的一个点,那么后手应该选择X的右边对称的点,如果没有则必输,否则必胜,然后再分 ...

  10. BFS+Hash(储存,判重) HDOJ 1067 Gap

    题目传送门 题意:一个图按照变成指定的图,问最少操作步数 分析:状态转移简单,主要是在图的存储以及判重问题,原来队列里装二维数组内存也可以,判重用神奇的hash技术 #include <bits ...