.htaccess重定向和url重写

什么是htaccess

概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

一个简单的重定向

 代码如下 复制代码
Redirect 301 ^old.html$ http://localhost/new.html

这是设置一个http状态码为301(永久移动)并把所有访问old.html转向到new.html。使用了正则表达式来匹配访问的页面,后面的url必须是完整路径。

Url重写

 代码如下 复制代码

RewriteEngine on
RewriteRule ^old.html$ new.html

第一行打开重写引擎
第二行是重写规则。这样用户访问old.html时实际却是访问的new.html,而且用户对此好吧知情。因为地址栏里依旧显示是old.html。

为了在地址栏显示新的访问地址,我们可以加个f标志在rewriterule语句里。

 代码如下 复制代码

RewriteRule ^old.html$ http://hostname/new.html [r=301]下面是把带查询参数的url重写成对搜索引擎友好的url

RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) product.php?cat=$1&brand=$2&prod=$3

这条规则允许访问者以类似这样的

 代码如下 复制代码
url products/turntables/technics/sl1210,

来访问product.php?cat=turntables&brand=technics&prod=sl1210.

括号里为一个单元,分别对应后面的$1,$2,$3。[^/]+ 在原括号里表示除了/之外的任何一个或是多个字符。

自定义错误页面

 代码如下 复制代码
ErrorDocument 404"/404.html"

这是定义404页面无法找到的错误,也可以定义其他错误代码的页面。

限定访问特点资源

 代码如下 复制代码

<Files"protectedfile.html">
   AuthName"Username and password required"
   AuthUserFile/path/to/.htpasswd
   Require valid-user
   AuthType Basic
</Files>

保护protectedfile.html,authName是登陆框的提示信息,authuserfile是.htpasswd文件的路径

阻止某些ip访问

 代码如下 复制代码

order allow,deny
deny from 192.168.0.1
allow from allOrder

告诉apache指令的顺序。这里的这个是先允许后拒绝的。虽然allow from all后出现但是还是在前面生效。拒绝了192.168.0.1的访问。也可以按段来屏蔽访问的,只要只指定前面的几段就可以类似,192.168.

实现缓存

 代码如下 复制代码

ExpiresActive on
ExpiresByType image/gif                 "access plus 1 month"
ExpiresByType image/png                 "access plus 1 month"
ExpiresByType image/jpg                 "access plus 1 month"
ExpiresByType image/jpeg                "access plus 1 month"

第一行开启,下面分别控制各种资源都加上一个月的缓存期。这个功能依赖apache的mod_expires 模块。

认证举例
如果你只是为了知道如何认证,而直接从这里开始看的,有很重要的一点需要注意,有一种常见的误解,认为实现密码认证必须要使用.htaccess文件,其实是不正确的。把认证指令放在主配置文件的<Directory>段中是一个更好的方法,而.htaccess文件应该仅仅用于无权访问主配置文件的时候。参见上述关于何时应该与何时不应该使用.htaccess文件的讨论。
有此声明在先,如果你仍然需要使用.htaccess文件,请继续看以下说明。

.htaccess文件的内容:

 代码如下 复制代码

AuthType Basic
AuthName "Password Required"
AuthUserFile /www/passwords/password.file
AuthGroupFile /www/passwords/group.file
Require Group admins

必须设置 AllowOverride AuthConfig 以允许这些指令生效。
服务器端包含(SSI)举例
.htaccess文件的另一个常见用途是允许一个特定的目录使用服务器端包含(SSI),可以在需要的目录中放置.htaccess文件,并作如下配置:

 代码如下 复制代码

Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml

注意,必须同时设置 AllowOverride Options 和 AllowOverride FileInfo 以使这些指令生效。

指令的作用范围.htaccess文件中的配置指令作用于.htaccess文件所在的目录及其所有子目录,但是很重要的、需要注意的是,其上级目录也可能会有.htaccess文件,而指令是按查找顺序依次生效的,所以一个特定目录下的.htaccess文件中的指令可能会覆盖其上级目录中的.htaccess文件中的指令,即子目录中的指令会覆盖父目录或者主配置文件中的指令。

例子:

 代码如下 复制代码
/www/htdocs/example1

目录中的.htaccess

文件有如下内容:
Options +ExecCGI

(注意:必须设置"AllowOverride Options"以允许在.htaccess中使用"Options"指令)
/www/htdocs/example1/example2目录中的.htaccess文件有如下内容:
Options Includes

时间: 2024-07-28 19:03:31

.htaccess重定向和url重写的相关文章

.htaccess重定向和url重写的几个例子

 .htaccess是apache虚拟目录中一个可以用来代替apache中conf中的一些功能了,像重定向和url重写或安全配置都可以利用它来完在下面来看看一些关于.htaccess例子. # 这是注释 # 指定默认首页查找顺序 DirectoryIndex index.htm .index.php #自定义404页面 ErrorDocument 404 /error/404.html #比较下面2句: 默认是302,用户访问的是abc,但实际显示的是def页面,地址栏也还是显示abc redi

.htaccess重定向和url重写详细介绍_Linux

什么是htaccess 概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置.通过htaccess文件,可以帮我们实现:网页301重定向.自定义404错误页面.改变文件扩展名.允许/阻止特定的用户或者目录的访问.禁止目录列表.配置默认文档等功能. 一个简单的重定向 复制代码 代码如下: Redirect 301 ^old.html$ http://localhost/new.html 这是设置一个http状态码为301(永久移动)并把所有访问old.ht

Windows IIS 7.5配置301重定向(URL重写)

需求背景: 如果您需要按seo搜索引擎结果中所显示的样式更改网页网址,建议您使用服务器端 301 重定向.这是确保用户及搜索引擎定向至正确网页的最佳方法.301 状态代码表示某网页已被永久迁移至新位置. 301 重定向功能在以下情况下尤为有用: 1.您已将网站移至新域,希望尽可能顺畅地完成这一转换. 2.人们通过不同网址访问您的网站.例如,如果可通过多种方式访问您的主页,如 http://example.com/home.http://home.example.com 或 http://www.

htaccess中URL重写(Rewrite)与301重定向(Redirect)配置

URL重定向是.htaccess的重头戏,它可以将长地址转为短地址.将动态地址转为静态地址.重定向丢失的页面.防止盗链.实现自动语言转换等.笔者觉得难点是在正则表达式的运用和理解上.有关htaccess的正则表达式用法,请查阅本站<.htaccess正则表达式>一文. 一.准备开始:mod_rewrite 实现所有这些神奇功能的模块叫做mod_rewrite,请确保你的服务器安装并启用了该模块: sudo a2enmod rewrite 我们一般会把所有涉及URL重写或者重定向的代码这样放置:

Apahce下.htaccess 重定向 301 302及图片防盗链规则

让[.htaccess]文件生效 在windows2003环境下如何配置apache支持.htaccess呢?很简单,方法如下: 一.在Apache配置文件httpd.conf中找到#LoadModule rewrite_module modules/mod_rewrite.so,去掉前面的"#"号保存. 二.配置虚拟主机文件httpd-vhosts.conf,重点颜色突出出.  代码如下 复制代码 <Directory "网站目录"> Options

iis7 url重写和重定向

注意不管是重写还是redirect重定向,匹配的url都要写成当前网站的url,也就是真是真实可以访问的,如当前网站ip为127.0.0.1,可以写成^127.0.0.1$ (1)url重写(可以实现伪静态) IIS实现反向代理 新建两个站点,端口分别使用 80 和 81,在DNS中新建A记录,指向该计算机(10.4.34.41) 配置过程如下: 1.在Windows Server 2012 R2上 安装ARR,URL Rewriter组件.   ARR3.0需要如下组件支持:Web Farm 

IIS7/IIS7.5 URL 重写 HTTP 重定向到 HTTPS的方法_win服务器

1.有SSL证书,或者新购.目前很多免费的SSL证书 2.IIS7 / IIS 7.5 下绑定 HTTPS 网站 3.下载安装URL重写模块:Microsoft URL Rewrite Module 32位:http://download.microsoft.com/download/4/9/C/49CD28DB-4AA6-4A51-9437-AA001221F606/rewrite_x86_zh-CN.msi 64位:http://download.microsoft.com/download

apache/tomcat的JSP对URL重写的SEO优化/二级域名的要点

apache|js|seo|二级域名|优化 Apache是用了很长时间,但也只是用了很长时间,要说精通还谈不上.所以这四五天存在着补课的味道在里面:既然公司不能提供好的系统管理员,也只能是自已兼任了.经过对Apache和tomcat结合后的进行SEO优化的处理,四五天后,对这几件工具的基本逻辑框架有了统一的认识. 对URL重写的了解需要是针对这样的需求:偏向于HTML的SEO搜索引擎优化,以及提供不定量的二级域名便于模块管理和推广.搜索引擎不能识虽动态页面在技术上是不可能的:我认为最大的可能在于

windows服务器下IIS7 安装URL Rewrite(URL重写)模块

此模块适用于IIS7.7.5.8. 微软在IIS7中添加了URL的重写模块,并且免费使用,可以导入.htaccess规则,确实是个不错的选择 URL Rewrite Module   URL Rewrite Module是一个基于规则的URL重写引擎,用于在URL被Web服务器处理之前改变请求的URL.对于动态Web应用程序,它可以为用户和seo/seo.html" target="_blank">搜索引擎提 供友好的URL,URL重写和重定向是基于HTTP头和服务器变