.htaccess是一个完整的文件名(只有后缀),它是用于Apache服务器下的配置文件,当.htaccess文件放在某一文件夹下,它仅对该文件夹下的文件和文件夹有效。通过.htaccess文件,可以配置服务器实现很多功能,比如错误定位,密码保护,IP拒绝,URL重写等等。

默认的Apache不支持.htaccess,需要修改Apache的配置文件httpd.conf,才能使得.htaccess有效。

配置方法:

配置方面:

1. 找到apache的安装目录下的conf下的httpd.conf文件,打开文件修改

LoadModule rewrite_module modules/mod_rewrite.so这行代码,他前面有个#号,把#号删掉

2.  找到

Options FollowSymLinks ExecCGI Indexes

AllowOverride None

Order deny,allow

Deny from all

Satisfy all

这个节点,把None改为All.节点可能有多个,修改和PHP路径相关的那个。

3. 重启apache服务

接下来是创建.htaccess文件,并在里面写配置。Windows中新建文件的时候,不允许文件只有后缀,可以采用notepad等工具新建另存为该文件名。

如果要实现URL重写,配置文件中采用正则表达式是编写URL,并使之和常规的php文件映射。常用的写法如下:

RewriteEngine on                       //on为打开,off为关闭

RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$ b.php?action=$1&id=$2

RewriteRule ([a-zA-Z1-9]{1,})/([a-zA-Z1-9]{1,})$ a.php?controller=$1&action=$2

RewriteRule MyController/[a-zA-Z1-9]$ MyController.php?action=$1

ErrorDocument 404 /404.txt

网上找了一篇文件http://roshanbh.com.np/2008/03/url-rewriting-examples-htaccess.html例举了常用的5种映射,也可以参考。

product.php?id=12 to product-12.html

RewriteEngine on

RewriteRule ^product-([0-9]+)\.html$ product.php?id=$1

Rewriting product.php?id=12 to product/ipod-nano/12.html

RewriteEngine on

RewriteRule ^product/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ product.php?id=$2

Redirecting non www URL to www URL

RewriteEngine On

RewriteCond %{HTTP_HOST} ^optimaxwebsolutions\.com$

RewriteRule (.*) http://www.optimaxwebsolutions.com/$1 [R=301,L]

Rewriting yoursite.com/user.php?username=xyz to yoursite.com/xyz

RewriteEngine  On

RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?username=$1

RewriteRule ^([a-zA-Z0-9_-]+)/$ user.php?username=$1

Redirecting the domain to a new subfolder of inside public_html.

RewriteEngine  On

RewriteCond %{HTTP_HOST} ^test\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.test\.com$

RewriteCond %{REQUEST_URI} !^/new/

RewriteRule (.*) /new/$1

示例:

.htaccess文件内容如下

RewriteEngine on                       //on为打开,off为关闭

RewriteRule ^([a-zA-Z1-9]{1,})/([a-zA-Z1-9]{1,})$ a.php?controller=$1&action=$2

RewriteRule ^([a-zA-Z1-9]{1,})/([a-zA-Z1-9]{1,})/$ a.php?controller=$1&action=$2

说明:

正则表达式,严格匹配类似Controller/Action或者Controller/Action/,映射到a.php

a.php内容

echo "你的controller:".$_GET['controller']."
";

echo "你的action:".$_GET['action'];

?>

输入http://localhost:8080/Controller/Action/

则被解析到http://localhost:8080/a.php?controller=Controller&action=Action

这2个url是等价的。

注意,在映射url后加上查询字符串不影响正常的映射,比如输入http://localhost:8080/Controller/Action/?value=100,也是可以的。

参考文档:

http://www.htaccess-guide.com/

http://corz.org/serv/tricks/htaccess.php

http://roshanbh.com.np/2008/03/url-rewriting-examples-htaccess.html

php rewrite url_PHP实现url重写和.htaccess相关推荐

  1. Nginx URL重写(rewrite)配置及信息详解

    URL重写有利于网站首选域的确定,对于同一资源页面多条路径的301重定向有助于URL权重的集中 Nginx URL重写(rewrite)介绍 和apache等web服务软件一样,rewrite的组要功 ...

  2. nginx:Url重写

    rewrite语法格式及参数语法: rewrite是实现URL重写的关键指令,根据regex (正则表达式)部分内容, 重定向到replacement,结尾是flag标记. rewrite    &l ...

  3. Nginx教程 :nginx URL 重写

    Nginx URL重写(rewrite)介绍 和apache等web服务软件一样,rewrite的组要功能是实现RUL地址的重定向.Nginx的rewrite功能需要PCRE软件的支持,即通过perl ...

  4. .htaccess技巧: URL重写(Rewrite)与重定向(Redirect)

    http://lesca.me/archives/htaccess-rewrite.html/comment-page-1#comment-16045 目录 Table of Contents 一.准 ...

  5. nginx服务器中url重写rewrite参数和例子

    本文转自:http://www.cnblogs.com/cgli/archive/2011/05/16/2047920.html 最近在VPS上尝试配置安装一个网站,VPS安装了LNMP(Linux+ ...

  6. Url Rewrite 再说Url 重写

    前几天看到园子里一篇关于 Url 重写的文章<获取ISAPI_Rewrite重写后的URL> , URL-Rewrite 这项技术早已不是一项新技术了,这个话题也已经被很多人讨论过多次.搜 ...

  7. IIS安装和使用URL重写工具-URL Rewrite

    下载和安装URL Rewrite IIS8默认是没有安装URL重写工具的,必须要自己下载安装. 如果IIS上默认有安装Web平台安装程序,我们可以使用平台自动安装URL Rewrite重写工具,打开I ...

  8. php重定向 .htaccess,.htaccess重定向和url重写

    # 这是注释 # 指定默认首页查找顺序 DirectoryIndex index.htm .index.php #自定义404页面 ErrorDocument 404 /error/404.html ...

  9. asp.net mvc、asp.net url重写 Url Rewrite

    最近在做一个cms手机网站,由于内容不是很多,很快做完了.空闲的时间考虑seo,想把url全部写成静态的.在查资料的时候,发现 UrlRewrite.Net这个组件非常的不错,尝试了下结果达到了理想的 ...

最新文章

  1. java设计模式之九外观模式(Facade)
  2. TreaponseHeader
  3. C++ 中的模板类声明头文件和实现文件分离后,如何能实现正常编译?
  4. java常见的ide_在三个Java IDE中生成的三种常见方法
  5. 【jq】c#零基础学习之路(1)Hello World!
  6. 物联网搜集大量数据协助制定业务策略 成为银行业竞争利器
  7. gradle文件利用java解析_使用文件读取Gradle Multi项目构建
  8. 如何解决Please ensure that adb is correctly located at......
  9. java md5加密源码_javaMD5加密源码
  10. 【有图有真相】全国软考高级三连冠感悟
  11. 二进制、八进制、十进制与十六进制
  12. 三步生活法:土豆(Todo),优势,庆祝
  13. 快速开发项目的前端框架主要针对后台界面
  14. 2022-爬虫-Selenium-百度安全验证
  15. DbVisualizer 9 解决中文乱码问题(win7,win10)
  16. 深圳教育培训机构启用消费评价二维码
  17. python爬表情包_教你用Python来爬取表情包网站的所有表情图片
  18. Java图片压缩大小,图片缩放
  19. cindy POSA2读书笔记(二)
  20. react map循环生成的button_【第1945期】彻底搞懂React源码调度原理(Concurrent模式)...

热门文章

  1. java枚举返回字符串_Java新特性:数据类型可以扔掉了?
  2. python基础(文件、异常、模块、类、对象)
  3. hashmap 从头到尾_如何从头到尾设计一个简单的复古徽标
  4. 检测输入路径是否存在错误_为什么存在用户输入错误
  5. H5 页面列表缓存方案
  6. UINavigationController
  7. CSS3中弹性盒布局的最新版
  8. 分享几个拉钩网的前端页面
  9. GAE 随机获取实体
  10. mybatis jar包_springboot2整合mybatis-plus3踩到的坑