Apache地址重写的配置分为两种方式,即通过httpd.conf配置和.htaccess文件。

首先要打开rewrite模块,windows下的配置是

LoadModule rewrite_module modules/mod_rewrite.so

httpd.conf的配置可以全局生效,也可以只配置一个目录,需要做的事情是在相应目录的Directory标签下配置Rewrite规则。

.htaccess的则放到相应目录下(或者根目录)即可,这是VPS里常用的一种方式,毕竟作为一个VPS购买者不可能要求提供商去更改全局配置文件。这种方式需要注意的有如下两点:

首先,.htaccess要想起作用,必须要在httpd.conf中相应的Directory标签下配置AllowOverride All(默认是None),其次是windows下这种无文件名仅有扩展名的文件是无法直接生成的,可以在cmd窗口下使用copy con命令来生成(这命令也有年头了,我小学的时候还学过,光阴荏苒啊,扯远了…),Ctrl+Z<Enter>保存。

然后我们说一下几个概念。

首先是RewriteEngine,这是地址重写的引擎,可以方便的设置为On或者Off来启用和关闭引擎。

其次是RewriteCond,地址重写的条件,符合这个条件的才进行表达式判断和重写,这样能有效减少匹配的条数,提高重写效率。

最后是RewriteBase和RewriteRule,RewriteBase指明重定向地址的基础,即RewriteRule后一部分重定向地址会拼合上RewriteBase,合成一个完整的重定向地址。这在一个web容器下有多个网站的时候比较有用。

RewriteRule才是我们讨论的主要话题。RewriteRule实现把符合表达式的地址重定向到另一个地址的功能,RewriteRule的语法类似于下面

RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2

RewriteRule紧跟着判断表达式,之后是需要重定向的位置,正则表达式()会捕获一个分组,然后通过$n引用这个分组,从而实现地址重写。RewriteRule匹配的开始位置是整个URL去掉当前目录后剩下的部分,比如我在/discuz配置上面所示的RewriteRule,然后输入一个URL-http://localhost/discuz/forum-1-1.html,被用来匹配的输入会是forum-1-1.html,也就是前面的/discuz/被吃掉了。对于整个问题,我们可以用如下的语句验证。

RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ rewrite.php?param=$1

注:在rewrite.php里打印一下GET['param’]参数

另外这里需要说明的是,如果我定义了

RewriteBase /discuz

那么前面的^forum-([0-9]+)-([0-9]+)\.html$不受影响,但是后面会变成/discuz/forumdisplay.php?fid=$1&page=$2。不过RewriteBase并不是必须的,若有指定RewriteBase,结果为RewriteBase+重定向地址,否则为当前目录+重定向地址。这里当前目录指的是.htaccess所在目录(使用.htaccess的时候)或者Directory标签指定的目录(使用httpd.conf的时候)。

以上操作在windows下测试通过。

参考文献:

[1]Apache中RewriteCond规则参数介绍,

http://hi.baidu.com/%D2%BB%CE%C4%CC%EC/blog/item/ace7f14e19851cc4d0c86af2.html

[2]RewriteRule-htaccess详细语法使用教程,

http://www.3code.cn/rewriterule-htaccess%E8%AF%A6%E7%BB%86%E8%AF%AD%E6%B3%95%E4%BD%BF%E7

转载于:https://www.cnblogs.com/sdqxcxh/archive/2012/04/02/2430239.html

Apache地址重写的几个问题相关推荐

  1. php重写地址,php url地址重写

    地址重写: urlRewrite: 就是:  1. 将php的地址index.php不写只写Action模块和function方法, 或者 2. php地址转变成html地址, 就是一种假的html, ...

  2. Apache的URL地址重写 RewriteCond与RewriteRule

    Apache的URL地址重写 http://hi.baidu.com/sonan/blog/item/c408963d89468208bba16716.html 第一种方法:Apache环境中如果要将 ...

  3. Apache的URL地址重写(RewriteCond与RewriteRule)

    Apache的URL地址重写 http://hi.baidu.com/sonan/blog/item/c408963d89468208bba16716.html 第一种方法:Apache环境中如果要将 ...

  4. 简单的apache URL重写

    对于网站地址的入口文件后缀.php放在地址栏处很不雅观,要去掉这个后缀,而后面的参数保持. 如果有修改apache的权限,通过修改apache url 重写是比较高效的方法,这样apache在解析地址 ...

  5. php url地址 怎么写,php url地址重写

    地址重写: urlRewrite: 就是:  1. 将php的地址index.php不写只写Action模块和function方法, 或者 2. php地址转变成html地址, 就是一种假的html, ...

  6. apache2.2.21下为codeigniter配置url地址重写

    2019独角兽企业重金招聘Python工程师标准>>> apache2.2.21下为codeigniter配置url地址重写 1.首先打开apache的配置文件,httpd.conf ...

  7. nginx的基本使用和反向代理,地址重写问题

    nginx相关操作 Windows下操作:1.启动:C:\server\nginx-1.14.2>start nginx或C:\server\nginx-1.14.2>nginx.exe注 ...

  8. Urlrewrite(url地址重写)和UrlRewriteFilter

    Urlrewrite(url地址重写)和UrlRewriteFilter Urlrewrite: urlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址 UrlRewr ...

  9. ASP.NET的地址重写“.NET研究”(URLRewriter)实现原理及代码示例

    一.概述 访问者输入:http://wu-jian.cnbolgs.com/default.aspx,实际请求和响应的地址却是:http://www.cnblogs.com/wu-jian/defau ...

最新文章

  1. 避坑指南:如何选择适当的预测评价指标?| 程序员评测
  2. 基于SSM实现宠物商城系统
  3. java nodelist 快速排序,【Leetcode】Sort List in java,你绝对想不到我是怎么做的^^我写完过了我自己都觉得好jian~...
  4. java代码没错却运行不了_Java代码没错误,tomcat能正常运行,但是我的项目主页却一直显示不了,显示404错误...
  5. 七天入门linux,一个Linux新手的七天
  6. C/C++基本类型字节
  7. 软件质量保证计划_如何做好软件项目的质量管理?
  8. 夜视模式,多少猥琐相机假汝之名
  9. 半平面交练习(计算几何)
  10. 微型计算机2017年9月上,2017年9月计算机一级考试WPS Office冲刺题
  11. ubuntu解压缩zip/tar/tar.gz/tar.bz2
  12. LeetCode 2120. 执行所有后缀指令(模拟)
  13. [结构力学] 几何构造分析的技巧
  14. python都可以开发什么_Python的优势到底是什么?Python都能开发什么?
  15. Futter基础第21篇: 实现普通对话框、列表对话框、单选对话框、Toast提示
  16. RHEL5.0 搭建DNS服务器
  17. webpack4.0版本中的js压缩问题
  18. jdk6版本下载地址
  19. 手机同步专家--基于SyncML协议同步通讯录的应用软件
  20. Elasticsearch搜索引擎安装使用及Java中使用

热门文章

  1. .NET设计模式系列文章
  2. [BTS06]BizTalk2006 SDK阅读笔记(九) 业务活动监控
  3. Debian中几个bash初始化脚本使用区别--【转载】
  4. 从一个路口转向另一个路口需要多少步
  5. 内存有限的情况下 Spark 如何处理 T 级别的数据?
  6. TP5 实现多字段的关键词模糊查询
  7. python rbf神经网络_原创,基于径向基函数(RBF)神经网络RBF网络的举例应用!
  8. nginx重定向到其他url方法_高级开发必须掌握Nginx之四,if、set、return
  9. Linux-鸟菜-5-目录配置-FHS
  10. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质示例 | 证明 共轭对称序列 x_e(n) 的 傅里叶变换 是 原序列傅里叶变换 的实部 )