通过 Apache 配置 Rewrite 支持 .htaccess

合集下载

apache伪静态通用规则

apache伪静态通用规则

apache伪静态通用规则Apache伪静态通用规则指的是在使用Apache服务器时,通过.htaccess文件来实现URL的伪静态化。

通过将动态URL转化为静态URL的形式,可以提高网站的SEO友好度,增加引擎对网站的收录和排名。

下面是一些常用的Apache伪静态规则:1.删除文件扩展名RewriteRule ^([^\.]+)$ $1.php [NC,L]2.重写动态参数URLRewriteRule ^category/([0-9]+)/([0-9]+)/?$ category.php?cat_id=$1&page=$2 [NC,L]3.重写带有查询参数的URLRewriteRule ^blog/(\d+)/?$ blog.php?id=$1 [NC,L]4.重定向旧URL至新URLRewriteRule ^old-url$ /new-url [R=301,L]5.隐藏目录结构RewriteRule ^page/([a-zA-Z0-9_-]+)/?$ index.php?page=$1 [NC,L]6.添加尾部斜杠RewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)/$ $1 [L,R=301]7.通过文件路径重定向RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php?path=$1 [QSA,L]这些规则只是Apache伪静态规则的一部分,具体的使用取决于网站的具体需求和URL结构。

在使用这些规则之前,需要确保服务器已启用了RewriteEngine模块,并且.htaccess文件位于网站根目录下。

需要注意的是,使用Apache伪静态规则时需要谨慎,不当的规则设置可能导致URL冲突或死循环等问题。

apache的rewrite重写的简单命令

apache的rewrite重写的简单命令

apache的rewrite重写的简单命令Apache Rewrite模块是一种用于URL重写和转换的强大工具。

它允许网站管理员使用基于规则的方法来修改URL的结构,以此实现搜索引擎优化(SEO)和提升用户体验的目的。

在本文中,我们将一步一步介绍Apache Rewrite重写的简单命令,帮助读者了解如何使用它来实现不同的需求。

一、Apache Rewrite模块简介Apache Rewrite模块是Apache HTTP服务器的标准模块之一,它通过使用正则表达式和规则集合来重写URL。

通过使用Rewrite规则,管理员可以修改URL的结构、转发请求到其他URL,并进行其他一些操作,以符合网站的需求。

二、启用Apache Rewrite模块首先,我们需要启用Apache Rewrite模块。

在Apache服务器上,我们可以使用以下命令来启用Rewrite模块:sudo a2enmod rewrite这个命令会在Apache配置文件中添加一个符号链接,以便启用Rewrite 模块。

完成后,需要重新启动Apache服务器,使更改生效:sudo service apache2 restart三、基本的Apache Rewrite规则启用了Rewrite模块后,我们就可以开始使用它来修改URL了。

下面是一些基本的Apache Rewrite规则的示例:1. 重定向一个URL到另一个URL如果我们想将一个URL重定向到另一个URL,可以使用以下命令:RewriteRule ^old-url /new-url [R=301,L]这个规则将匹配以“old-url”结尾的URL,并将其重定向到“/new-url”。

2. 重写URL参数有时,我们想通过重写URL参数来改变URL的结构。

例如,把"/product?id=123"重写为"/product/123"。

可以使用以下命令:RewriteRule ^product/([0-9]+) /product?id=1 [L]这个规则将匹配以“product/”开头,后跟一个或多个数字的URL,并将其重写为"/product?id=(数字)"。

apache的rewrite重写的简单命令 -回复

apache的rewrite重写的简单命令 -回复

apache的rewrite重写的简单命令-回复Apache的rewrite重写是一种用于改变URL结构的强大工具。

通过Apache的rewrite模块,我们可以在服务器级别或虚拟主机级别上重写或重定向URL,以便更好地管理网站的URL结构和提供更好的用户体验。

重写操作可以在许多方面使用,例如搜索引擎优化、页面重定向和错误处理等。

本文将一步一步回答您关于Apache的rewrite重写的简单命令。

在开始之前,请确保您的服务器上已经安装了Apache,并且已经启用了Apache的rewrite模块。

您可以通过编辑Apache配置文件来启用rewrite模块。

找到并编辑Apache配置文件中的httpd.conf文件(或其他名称,具体取决于您的服务器设置)。

找到以下行,并删除前面的注释符号“#”以启用rewrite模块。

LoadModule rewrite_module modules/mod_rewrite.so完成后,请重新启动Apache服务器以使更改生效。

一旦启用了rewrite 模块,就可以使用下面的步骤来执行URL重写。

步骤一:创建.htaccess文件在需要重写URL的目录中创建一个名为.htaccess的文件。

如果您希望在整个网站上应用重写规则,请将.htaccess文件放在网站的根目录中。

如果您只想在特定目录中应用重写规则,请将.htaccess文件放在该目录中。

步骤二:启用重写规则在.htaccess文件中添加以下代码来启用重写规则。

RewriteEngine On如果.htaccess文件中已经存在其他的rewrite规则,请确保将该行代码放在已经存在的规则之前。

步骤三:编写简单的重写规则现在您可以开始编写重写规则了。

以下是一些基本的重写规则示例:1. 重写到另一个URLRewriteRule ^old-page /new-page [L,R=301]上述规则将将所有访问"/old-page"的请求重写到"/new-page"。

. htaccess中的写法

. htaccess中的写法

文章标题:深度解析:如何正确使用.htaccess中的写法文章内容:一、介绍.htaccess文件的作用在网络技术中,.htaccess文件是一个Apache服务器的配置文件,它被用来配置服务器的行为。

通常情况下,.htaccess文件会被用来实现URL重写、发送自定义错误页面、限制/允许特定IP位置区域访问全球信息湾等功能。

二、初识.htaccess的语法和结构.htaccess文件的语法比较简单,主要是由一系列指令和参数组成。

在.htaccess文件中,每一条指令都是以Rewrite开头的,其后紧接着是一系列的规则和参数。

要实现URL重写功能,可以使用RewriteRule指令,然后后面跟上具体的重写规则。

三、从简单到复杂:学习.htaccess的基础写法在.htaccess文件中,最常见的用法就是实现URL重写。

通过RewriteRule指令,我们可以将原始URL重写成我们希望的形式。

将动态URL转换为静态URL,或者实现URL路径的重定向等功能。

基础的写法可以通过以下几个简单的例子来体现:1. 实现URL重写在.htaccess文件中,我们可以通过RewriteRule指令来实现URL的重写。

要将动态URL重写为静态URL,可以使用如下的写法:```RewriteEngine OnRewriteRule ^article/([0-9]+)$ /article.php?id=$1 [L]```这条规则表示,将形如/article/123的URL重写为/article.php?id=123的形式。

2. 实现URL路径的重定向除了重写功能,.htaccess文件还可以实现URL路径的重定向。

将所有访问全球信息湾根目录下的文件都重定向到一个新的子目录下,可以用如下的写法:```RewriteEngine OnRewriteRule (.*) /newfolder/$1 [R=301,L]```这条规则表示,将原始URL中的路径都重定向到/newfolder/目录下,并返回301状态码。

rewriteengine语法

rewriteengine语法

rewriteengine语法
在Apache服务器的.htaccess文件中,RewriteEngine用于控制URL重写功能的开启和关闭。

基本语法如下:
RewriteEngine on|off
- on:表示开启RewriteEngine功能
- off:表示关闭RewriteEngine功能
通常,在启用RewriteEngine之后,可以在.htaccess文件中使用RewriteRule来定义URL重写规则。

例如:
RewriteEngine on
RewriteRule ^old-url new-url [R=301,L]
上述规则将会将请求的URL中的“old-url”重写为“new-url”,并进行301重定向。

需要注意的是,如果没有启用RewriteEngine或规则的写入格式存在错误,重写规则将不会生效。

在.htaccess文件中,通常可以通过以下方式检查和测试规则是否生效:
1. 确保服务器已开启AllowOverride指令,以允许在.htaccess文件中使用RewriteEngine。

可在Apache的配置文件中找到该指令,确保其设置为“All”或“FileInfo”。

2. 检查.htaccess文件中的RewriteEngine语句是否正确,语法是否准确。

如果存在错误,则可以查看Apache的错误日志文件以获取更多信息。

3. 可以尝试将RewriteEngine语句与其他RewriteRule规则结合使用,以验证是否生效。

rewriterule用法 -回复

rewriterule用法 -回复

rewriterule用法-回复要使用RewriteRule进行重写规则,首先需要了解什么是RewriteRule以及它的用途。

RewriteRule是Apache中的一个模块,用于对URL进行重写和重定向。

它允许网站管理员根据自己的需求修改URL,以改进网站的用户体验和搜索引擎优化。

RewriteRule的基本语法如下:RewriteRule pattern target [flags]- `pattern`是一个正则表达式,用于匹配要重写的URL。

- `target`是一个字符串,用于指定要将URL重写为的新URL。

- `flags`是一些可选的标志,用于指定重写规则的行为。

下面,我将逐步回答关于RewriteRule用法的问题。

1. 为什么要使用RewriteRule?- RewriteRule允许网站管理员根据自己的需求修改URL,以改善网站的用户体验。

通过使用有意义的URL结构,用户可以更容易地理解网站的内容和页面层次结构。

- 重写URL还可以提升网站的搜索引擎优化。

搜索引擎更容易理解具有关键字和有意义结构的URL,并将其作为排名因素之一。

2. 如何配置RewriteRule?- 首先,确保你的服务器已启用Rewrite模块。

可以在Apache的配置文件中找到相关的配置项,并确保它已被取消注释。

- 在你的网站根目录下的.htaccess文件中添加RewriteRule。

如果你的网站无法使用.htaccess文件,可以在服务器的配置文件中添加RewriteRule。

3. 如何使用RewriteRule进行简单的重写?- 假设我们想将URL " 重写为"RewriteRule ^product/([0-9]+) product.php?id=1 [L]这个规则首先使用正则表达式`^product/([0-9]+)`匹配URL,并将其中的数字捕获为1。

然后将URL重写为product.php?id=1,其中1是捕获到的数字。

.htaccess中的apacherewrite规则写法详解

.htaccess中的apacherewrite规则写法详解

.htaccess中的apacherewrite规则写法详解.htaccess中的apache rewrite写法:1RewriteEngine On2RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$3RewriteCond %{REQUEST_URI} !^/blog/4RewriteCond %{REQUEST_FILENAME} !-f5RewriteCond %{REQUEST_FILENAME} !-d6RewriteRule ^(.*)$ /blog/$17# 没有输⼊⽂件名的默认到到⾸页8RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$9RewriteRule ^(/)?$ blog/index.php [L]下⾯我开始解说⼀下上⾯的意思:【RewriteEngine On】表⽰重写引擎开,关闭off,作⽤就是⽅便的开启或关闭以下的语句,这样就不需要⼀条⼀条的注释语句了。

【RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$】这是重写条件,前⾯%{HTTP_HOST}表⽰当前访问的⽹址,只是指前缀部分,格式是不包括“http://”和“ /”,^表⽰字符串开始,$表⽰字符串结尾,\.表⽰转义的. ,如果不转义也⾏,推荐转义,防⽌有些服务器不⽀持,?表⽰前⾯括号www\.出现0次或1次,这句规则的意思就是如果访问的⽹址是或者 就执⾏以下的语句,不符合就跳过。

【RewriteCond %{REQUEST_URI} !^/blog/】也是重写条件,%{REQUEST_URI}表⽰访问的相对地址,就是相对根⽬录的地址,就是域名/后⾯的成分,格式上包括最前⾯的“/”,!表⽰⾮,这句语句表⽰访问的地址不以/blog/开头,只是开头^,没有结尾$【RewriteCond %{REQUEST_FILENAME} !-f】【RewriteCond %{REQUEST_FILENAME} !-d】这两句语句的意思是请求的⽂件或路径是不存在的,如果⽂件或路径存在将返回已经存在的⽂件或路径【RewriteRule ^(.*)$ /blog/$1】重写规则,最重要的部分,意思是当上⾯的RewriteCond条件都满⾜的时候,将会执⾏此重写规则,^(.*)$是⼀个正则表达的匹配,匹配的是当前请求的URL,^(.*)$意思是匹配当前URL任意字符,.表⽰任意单个字符,*表⽰匹配0次或N次(N>0),后⾯ /blog/$1是重写成分,意思是将前⾯匹配的字符重写成/blog/$1,这个$1表⽰反向匹配,引⽤的是前⾯第⼀个圆括号的成分,即^(.*)$中的.* ,其实这⼉将会出现⼀个问题,后⾯讨论。

phpstudy伪静态规则

phpstudy伪静态规则

phpstudy伪静态规则PHPStudy是一款PHP开发环境软件,在使用PHPStudy的过程中,可能会遇到需要配置伪静态规则的情况。

伪静态,是一种URL重写技术,将动态的URL转换为静态的URL,更加利于搜索引擎的收录和优化。

在PHPStudy中配置伪静态规则,一般需要进行以下几个步骤:1. 开启Apache的Rewrite模块。

在PHPStudy的软件中,点击“选项”-“Apache设置”-“Apache 模块”,勾选“rewrite_module”,并保存更改。

2. 编写.htaccess文件。

.htaccess文件是放置在需要进行伪静态规则配置的网站根目录下的一个文件,可以通过文本编辑器进行编写。

以下是一个示例的.htaccess文件:<IfModule mod_rewrite.c>RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]</IfModule>上述代码中,RewriteRule是规则的核心部分,其中包含3个参数:- ^(.*)$:表示所有URL匹配规则。

- index.php:转换后的静态URL。

- [QSA,PT,L]:3个括号中的参数分别表示将原有的参数追加到新的URL中、强制保留URL大小写和禁止任何后续规则执行。

3. 重启Apache服务器。

在完成以上两个步骤后,需要重启Apache服务器使新的配置生效。

总的来说,在PHPStudy中配置伪静态规则并不麻烦,但需要注意的是,不同的网站可能需要不同的伪静态规则配置,需要根据具体情况进行设置。

apache301跳转规则

apache301跳转规则

apache301跳转规则
Apache 301 跳转规则是一种重定向机制,用于将一个 URL 永
久重定向到另一个 URL。

这可以通过修改 Apache 服务器的配
置文件中的 `.htaccess` 文件来实现。

以下是一个示例的 Apache 301 跳转规则的语法:
```
RewriteEngine On
RewriteRule ^old-url$ /new-url [R=301,L]
```
上述规则的含义是,当用户访问 `old-url` 时,服务器会将请求
重定向到 `new-url` 并返回 301 状态码,表示永久移动。

`[R=301,L]` 是可选的参数,其中 `R=301` 指定了重定向的类
型为 301,`L` 表示这是最后一个规则,也就是说,如果匹配
到该规则后,将不再尝试匹配其他规则。

你可以根据自己的需求修改 `old-url` 和 `new-url` 的值,以满
足具体的跳转需求。

如果需要多条跳转规则,可以使用多个`RewriteRule` 来实现。

例如:
```
RewriteEngine On
RewriteRule ^old-url1$ /new-url1 [R=301,L]
RewriteRule ^old-url2$ /new-url2 [R=301,L]
```
上述规则会将 `old-url1` 重定向到 `new-url1`,将 `old-url2` 重定向到 `new-url2`。

请注意,修改 `.htaccess` 文件前,请确保你拥有访问服务器的正确权限,并备份配置文件以防止意外情况。

ISAPI_Rewrite 最全的中文说明介绍

ISAPI_Rewrite 最全的中文说明介绍

改变方向将导致服务器送对一个客户的直接反应以改方向 指示(HTTP 反应代码302 与地点倒栽跳水), 提供收效 URI 作为一个新地点。 您能使用(由RFC 必须的绝对链接 2068) 在改变方向指示改请求方向对一个另外主人, 口岸 并且协议。 总改指示起因方向重写引擎停止规则 程序化处理。
有lite版本
不过有如下限制:
1.不支持分布式/htaccess的设置/目录和站点级别的设置,只有一个全局性设置文件可配置:httpd.conf
2.不支持<virtualhost>虚拟目录, <directorymatch> , <files> , <filesmatch> , <location>和<locationmatch>标记
3.有没有代理模块的简洁版,因此,所有代理相关的功能一样, rewriteproxy指令和[ p ]国旗将被忽略。
4.没有手动安装套件简洁版安装在一个共享的托管环境。
5.isapi_rewrite Lite是完全免费的,这是一个很好的解决方案为发展或测试的目的和小的服务器主机,只有少数的网站,并且不需要分发配置或代理职能。
ISAPI_Rewrite 最全的中文说明介绍
介绍
ISAPI_Rewrite 是一位强有力的正规兵基于表示 URL 操作引擎。 它行动主要象亚帕基印第安人的mod_Rewrite, 但它是 设计特别是为Microsoft Internet Information Server 并且微软安全和加速度服务器2004 年。 如果曾经您 想改变您的网站的URL 计划, 这个产品是为您!
它并且被推荐登记消息来源dll 提供文本描述 ISAPI_Rewrite 的事件对事件观察者。 这能由发射做被提供 regmsg 。vbs 剧本从的文件夹 RewriteMsg 。dll 将被找出。

Apachemod_rewrite的中文配置、使用和语法介绍

Apachemod_rewrite的中文配置、使用和语法介绍

Apachemod_rewrite的中⽂配置、使⽤和语法介绍介绍和配置:以数据库后台驱动的动态内容的⽹站,经常会遇到这些的问题:当在浏览器的地址栏输⼊⼀个⽆效的参数时,会出现数据库的错误提⽰,这是⼀个安全的隐患搜索引擎⽆法收录你的所有⽹页⽹页的链接地址是⼀系列的参数,对浏览⽤户和搜索引擎都不易理解这些问题都可以通过Apache服务器的⼀个基本的模块mod_rewrite来解决,默认的安装的Apache就会装有这个模块。

要启⽤这个模块,打开 httpd.conf⽂件,察看下⾯的两⾏是否被屏蔽,第⼀⾏是载⼊mod_rewrite模块,第⼆⾏是启⽤这个模块。

LoadModule rewrite_module modules/mod_rewrite.soAddModule mod_rewrite.cmod_rewrite这个模块是如何⼯作的呢?mod_rewrite截获符合特定条件的URL,并按照设定的规则将它们改写成需要的URL。

重写的规则的表达式:RewriteRule 模式替换 [选项]RewriteRule 是⼀个简单的命令告诉mod_rewrite这个模块如何去重写,关键的地⽅在于可以在模式和替换中使⽤正则表达式来匹配相应的字符,正则表达式的⼴泛的灵活性能将动态的URL转换成各式各样的符合要求的静态URL。

看看这个重写规则:RewriteRule /products/([0-9]+)/fancy/products.php?id=$1这样,访问者就⽆法知道你的程序真正放在那个⽬录,程序的真正名字是什么,这也提⾼了⽹站的安全系数;这样的URL也去掉了?=这些字符,易于搜索引擎的机器⼈爬⾏你的⽹站。

通过正则表达式,可以写出更复杂的重写规则:RewriteRule ^/products$ /content.phpRewriteRule ^/products/([0-9]+)$ /content.php?id=$1RewriteRule ^/products/([0-9]+),([ad]*),([0-9]{0,3}),([0-9]*),([0-9]*$)重写规则的选项有‘forbidden’ 或 ‘f’ - 403 禁⽌‘gone’ 或 ‘g’ - 410 gone‘nocase’ 或 ‘NC’ - ⼤⼩写敏感‘next’/N’ - 回到第⼀条规则’skip=N’ 或 ‘S=N’ - 跳过下⾯的N条规则流程控制mod_rewrite是按照从上到下的顺序执⾏重写的规则,如果URL匹配了第⼀条规则,则按照第⼀条规则进⾏重写,如果不匹配,就执⾏第⼆条规则,直到最后。

Apache伪静态Rewrite详解

Apache伪静态Rewrite详解

Apache伪静态Rewrite详解⼀、Rewrite规则简介:Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于 Perl语⾔。

可基于服务器级的(httpd.conf)和⽬录级的 (.htaccess)两种⽅式。

如果要想⽤到rewrite模块,必须先安装或加载rewrite模块。

⽅法有两种⼀种是编译apache的时候就直接安装rewrite模块,别⼀种是编译apache时以DSO模式安装apache,然后再利⽤源码和apxs来安装rewrite模块。

⼆、在Apache配置中启⽤Rewrite打开配置⽂件httpd.conf:复制代码代码如下:1.启⽤rewrite# LoadModule rewrite_module modules/mod_rewrite.so 去除前⾯的 #2.启⽤.htaccess在虚拟机配置项中AllowOverride None 修改为: AllowOverride All⼆、Rewrite基本写法服务器有配置⽂件不可能由我们来改,所以⼤多情况下要在⽹站的根⽬录下建⼀个.htaccess⽂件。

复制代码代码如下:RewriteEngine on //启动rewrite引擎RewriteRule ^/index([0-9]*).html$ /index.php?id=$1 //“([0-9]*)” 代表范围⽤(.*)代表所有,下同。

RewriteRule ^/index([0-9]*)/$ /index.php?id=$1 [R] //虚拟⽬录复制代码代码如下:RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理Alias /def /ghi14) S=num(skip next rule(s)) 跳过num条规则15) E=VAR:VAL(set environment variable) 设置环境变量复制代码代码如下:RewriteEngine OnRewriteCond %{HTTP_HOST} ^RewriteCond %{REQUEST_URI} !^user.php$RewriteCond %{REQUEST_URI} .php$RewriteRule (.*).php$ /$1/ [R]RewriteCond %{HTTP_HOST} !^RewriteRule ^(.+) %{HTTP_HOST} [C]RewriteRule ^([^.]+) /user.php?username=$1例⼦⼆:复制代码代码如下:/type.php?typeid=* –> /type*.html/type.php?typeid=*&page=* –> /type*page*.htmlRewriteRule ^/type([0-9]+).html$ /type.php?typeid=$1 [PT]RewriteRule ^/type([0-9]+)page([0-9]+).html$ /type.php?typeid=$1&page=$2 [PT]。

apache.htaccess文件详解和配置技巧总结

apache.htaccess文件详解和配置技巧总结

apache.htaccess⽂件详解和配置技巧总结.htaccess是⼀个纯⽂本⽂件,它⾥⾯存放着Apache服务器配置相关的指令。

.htaccess主要的作⽤有:URL重写、⾃定义错误页⾯、MIME类型配置以及访问权限控制等。

主要体现在伪静态的应⽤、图⽚防盗链、⾃定义404错误页⾯、阻⽌/允许特定IP/IP段、⽬录浏览与主页、禁⽌访问指定⽂件类型、⽂件密码保护等。

.htaccess的⽤途范围主要针对当前⽬录。

启⽤.htaccess,需要修改httpd.conf,启⽤AllowOverride,并可以⽤AllowOverride限制特定命令的使⽤。

打开httpd.conf⽂件⽤⽂本编辑器打开后,查找复制代码代码如下:<Directory />Options FollowSymLinksAllowOverride None</Directory>改为:<Directory />Options FollowSymLinksAllowOverride All</Directory>如果需要使⽤.htaccess以外的其他⽂件名,可以⽤AccessFileName指令来改变。

例如,需要使⽤.config ,则可以在服务器配置⽂件中按以下⽅法配置:复制代码代码如下:AccessFileName .config1、访问控制基础:Order命令为了限制⽤户访问⼀些关键⽬录,通常加⼊.htaccess⽂件,常见的写法如下:复制代码代码如下:<Files ~ "^.*\.([Ll][Oo][Gg])|([eE][xX][eE])">Order allow,denyDeny from all</Files>说明:(1)Files后的波浪线表⽰启⽤“正则表达式”,简单的写法有:<Files *>。

(2)Order命令:通过Allow,Deny参数,Apache⾸先找到并应⽤Allow命令,然后应⽤Deny命令,以阻⽌所有访问,也可以使⽤Deny,Allow。

apache的AllowOverride以及Options使用详解

apache的AllowOverride以及Options使用详解

apache的AllowOverride以及Options使⽤详解AllowOverride参数就是指明Apache服务器是否去找.htacess⽂件作为配置⽂件,如果设置为none,那么服务器将忽略.htacess⽂件,如果设置为All,那么所有在.htaccess⽂件⾥有的指令都将被重写。

对于AllowOverride,还可以对它指定如下⼀些能被重写的指令类型.通常利⽤Apache的rewrite模块对 URL 进⾏重写的时候, rewrite规则会写在 .htaccess ⽂件⾥。

但要使 apache 能够正常的读取.htaccess ⽂件的内容,就必须对.htaccess 所在⽬录进⾏配置。

从安全性考虑,根⽬录的AllowOverride属性⼀般都配置成不允许任何Override ,即复制代码代码如下:<Directory />AllowOverride None</Directory>在 AllowOverride 设置为 None 时, .htaccess ⽂件将被完全忽略。

当此指令设置为 All 时,所有具有 ".htaccess" 作⽤域的指令都允许出现在 .htaccess ⽂件中。

⽽对于 URL rewrite 来说,⾄少需要把⽬录设置为复制代码代码如下:< Directory /myblogroot/>AllowOverride FileInfo< /Directory>2.在要⽀持url rewirte的⽬录启⽤ Options FollowSymLinks和AllowOverride All复制代码代码如下:Alias /php "c:/web/php/"<Directory "c:/web/php/">Options Indexes FollowSymLinksAllowOverride AllOrder allow,denyAllow from all</Directory>这样通过http://localhost:8080/php/访问时,/php/和其下⾯的⼦⽬录将⽀持url rewrite1 AuthConfig 允许使⽤所有的权限指令,他们包括AuthDBMGroupFile AuthDBMUserFile AuthGroupFile AuthName AuthTypeAuthUserFile和Require2 FileInfo 允许使⽤⽂件控制类型的指令。

apache_rewrite语法学习

apache_rewrite语法学习
exp:
RewriteBase /
对根目录进行重写
----------------------------------------------------------
5. RewriteRห้องสมุดไป่ตู้le 指令
说明
为重写引擎定义重写规则
语法
RewriteRule Pattern Substitution[flag]
NOTE:RewriteBase指令显示设置了目录级重写的基准,在下文中,你将看到RewriteRule
可以用于目录级的配置文件中(.htaccess)并在局部范围内起作用,即规则实际处理的只
是剥离了本地路径前缀的一部分。处理结束后,这个路径会被自动地附着回去。默认值"
RewriteBase physical-directory-path"。
兼容性
MaxRedirects在2.1及以后的版本种已经不可用
--------------------------------------------------------
3. RewriteLog 指令
说明
设置重写引擎日志的文件名
语法
RewriteOptions file_path
可以包括:
$N N表示序号,N=0~9,数字号与PATTERN想核匹配
%N引用最后一个RewriteCond模板中匹配的数据,N表示序号
%{VARNAME}服务器变量
${mapname:key|default}映射函数调用。当substitution有"-"前缀时,表示
不进行替换,只做匹配检查。
所指的资源永久消失了。

Apache Url Rewrite(mod_rewrite)

Apache Url Rewrite(mod_rewrite)
(2).htaccess的实现方法
我们将下面的部分放到httpd.conf中。
< Directory “/usr/local/apache/htdocs/manual/”>
options Indexes followsymlinks
allowoverride all
< /Directory >
您还可以利用.htaccess方案将这个manual目录重定向到用户phpoa自己的主目录。
rewriteengine on
rewritebase /~phpoa/
rewriterule ^(.*)$ $1 [R=301]
这样,对manual目录下任何文件的请求被重定向到~phpoa目录下相同文件的请求。
1.将请求内容外部重定向(Redirect)到另一个URL
让浏览器再次以新的URL发出请求(R=301或者R=302,临时的或是永久的重定向)。
例如,一个网站有正规的URL和别名URL,对别名URL进行重定向到正规URL,或者网站改换成了新的域名,则把旧的域名重定向到新的域名。
2.由Apache内部子请求代理产生新的内容送回给客户
四、Apache Url Rewrite怎样工作
我们假定在编译Apache时已经把mod_rewrite编译成模块,确信您的httpd.conf中有LoadModule rewrite_module libexec/mod_rewrite.so,并且在Addmodule中有Addmodule mod_rewrite.c,则可以使用Apache Url Rewrite。
文件/usr/local/apache/conf/rewrite.map的内容如下:

htaccess伪静态规则

htaccess伪静态规则

htaccess伪静态规则htaccess伪静态规则是指在Apache服务器上使用的配置文件,用于定义在网页浏览器中访问Web网站时,怎样匹配指定页面才会返回正确的相应页面。

通常,我们使用.htaccess文件在Apache Web服务器上实现伪静态,即在不修改服务器设置的情况下,使用URL重写技术来改变/隐藏真实URL,从而实现伪静态效果。

伪静态规则是由RewriteRule来配置的,可以使用Apache内部函数RewriteFunction进行多种形式的替换策略。

RewriteRule的格式如下:RewriteRule Pattern Substitution [Flag]其中,Pattern参数指的是模式字符串,Substitution参数指的是替换字符串,Flag参数指的是匹配模式的标志。

在实现htaccess伪静态规则时,常用的RewriteRule Flag参数包括:[L] —表示每一组重写规则只匹配一次,该参数用来阻止将匹配到的URL重复多次;[R] —表示将匹配到的URL重定向到指定的URL;[N] —启动 RewriteRule 指令组中下一个指令;[PT] —使用PathTranslated来让后端程序获取重写后的真实URL。

常用的Apache内部函数RewriteFunction有:RewriteCond —添加一个条件判断,仅当使用rewrite到的URL符合该条件时,才会触发rewrite操作;RewriteMap —用于映射一对对应的key-value 值,并在满足条件时将指定值替换到URL中;RewriteBase —使用一个相对路径来描述RewriteRule指令添加到htaccess文件中的基本目录。

使用htaccess伪静态规则之前,首先要将Apache的mod_rewrite 模块激活,重新启动Apache服务器,使其支持URL重写功能;然后,在Apache网站根目录下,添加 .htaccess 文件,在文件中添加RewriteRule规则,以及RewriteFunction等函数,实现替换重定向等伪静态URL匹配效果;最后,使用Apache的 RewriteBase 指令,把RewriteRule 的地址规则设定,完成URL重写配置。

apache301伪静态规则

apache301伪静态规则

apache301伪静态规则摘要:一、Apache 301伪静态规则概述二、实现301重定向的方法1.使用Apache配置文件2.使用.htaccess文件3.使用Nginx服务器三、优点与缺点1.提高SEO效果2.简化URL3.不足之处四、实际应用场景五、注意事项正文:一、Apache 301伪静态规则概述Apache 301伪静态规则是指在网站开发过程中,通过服务器配置将动态URL重定向到静态URL,从而提高网站的SEO效果、简化URL和提高用户体验。

在这种重定向方式中,HTTP状态码301表示永久重定向,告诉搜索引擎和访问者该网页已永久移动到新地址。

二、实现301重定向的方法1.使用Apache配置文件在网站的Apache配置文件中,添加如下代码:```<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteRule ^index.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ./index.php [L]</IfModule>```2.使用.htaccess文件在网站根目录下创建一个名为.htaccess的文件,添加如下代码:```<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteRule ^index.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ./index.php [L]</IfModule>```3.使用Nginx服务器在Nginx配置文件中,添加如下代码:```location / {root /var/www/html;index index.php;if ($args = "/") {rewrite /(.*) /$1/index.php;}}```三、优点与缺点1.提高SEO效果:通过将动态URL重定向到静态URL,有助于提高网站在搜索引擎中的排名。

htaccess 语法

htaccess 语法

htaccess 语法.htaccess 是一个用于配置 Apache 服务器的文件。

它使用基于规则的语法,允许用户对服务器行为进行细粒度的控制。

本文将介绍.htaccess 的基本语法和一些常用的配置指令,以帮助读者更好地理解和使用.htaccess 文件。

.htaccess 文件的基本语法如下:- 每一行代表一个指令或一个注释。

- 注释以 '#' 开头,可以用于解释配置的目的。

- 指令由指令名称和参数组成,中间使用一个或多个空格分隔。

- 指令名称不区分大小写,但参数可能是区分大小写的。

下面是一些常用的.htaccess 配置指令:1. RewriteEngine这是一个非常重要的指令,用于启用或禁用URL 重写功能。

要使用 URL 重写规则,必须先启用 RewriteEngine。

参数为'on' 表示启用,'off' 表示禁用。

示例: RewriteEngine on2. RewriteBase这个指令定义了重写规则中的基本 URL 路径。

如果你的网站在子目录中,你需要使用 RewriteBase 来设置基本路径。

示例: RewriteBase /subdirectory/3. RewriteRule这个指令定义了一个 URL 重写规则。

它使用正则表达式匹配 URL,并将匹配的 URL 重写为指定的目标 URL。

示例: RewriteRule ^old_url$ /new_url [R=301,L]4. Redirect这个指令用于重定向指定的 URL。

它可以用于永久或临时重定向。

示例: Redirect 301 /old_url /new_url5. Header这个指令用于设置响应的 HTTP 头信息。

示例: Header set Content-Type text/html6. ErrorDocument这个指令用于自定义错误页面。

它定义了当服务器返回指定错误码时应显示的页面。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【转】通过 Apache 配置 Rewrite 支持 .htaccess2011-03-01 14:16转载自分享最终编辑ruhaole1.首先确定您使用的 Apache 版本,及是否加载了 mod_rewrite 模块。

及是否加载了 mod_rewrite 模块 .mod_rewrite 的是一个 Apache 模块,可使服务器操纵请求的网址。

根据一系列规则对传入的网址进行检查,规则中包含一个正则表达式来检测特定的格式。

如果在地址中发现了一个格式,并且满足适当的条件,该格式就会被一个替代的字符串或者是动作取代。

Apache 1.x 的用户请检查 conf/httpd.conf 中是否存在如下两段代码:清单 1. Apache 1.x 的加载模块代码LoadModule rewrite_module libexec/mod_rewrite.soAddModule mod_rewrite.cApache 2.x 的用户请检查 conf/httpd.conf 中是否存在如下一段代码:清单 2. Apache 2.x 的加载模块代码LoadModule rewrite_module modules/mod_rewrite.so如果存在,那么在配置文件(通常就是 conf/httpd.conf)中加入如下代码。

此时请务必注意,如果网站使用通过虚拟主机来定义,请务必加到虚拟主机配置,即 <VirtualHost> 中去,如果加在虚拟主机配置外部将可能无法使用,改好后将 Apache 重启。

稍后再解释这段代码的意思Apache配置:支持httpd.conf 配置和目录 .htaccess配置启用rewrite# LoadModule rewrite_module modules/mod_rewrite.so去除前面的 #LoadModule rewrite_module modules/mod_rewrite.so启用.htaccessAllowOverride None 修改为:AllowOverride All------------------------------------------------------------------------------让apache服务器支持.htaccess如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让APACHE支持.htaccess了。

打开httpd.conf文件用文本编辑器打开后,查找<Directory />Options FollowSymLinksAllowOverride None</Directory>改为<Directory />Options FollowSymLinksAllowOverride All</Directory>就可以了。

RewriteEngine OnRewriteBase /伪静态RewriteRule ^(article)-([0-9]+)\.htm$ $1.php\?id=$2根据IP阻止用户访问order allow,denydeny from 127.0.0.1allow from allRedirects 转向Redirect /article.php 防止.htaccess文件被查看order allow,denydeny from all制作错误提醒页面ErrorDocument 404 添加 MIME 类型AddType application/x-shockwave-flash swfTips: 设置类型为 application/octet-stream 将提示下载改变缺省的首页文件DirectoryIndex aa.html index.html index.pl default.htm防止目录列表时显示IndexIgnore *RewriteEngine OnRewriteBase /RewriteCond %{REQUEST_FILENAME} -s [OR]RewriteCond %{REQUEST_FILENAME} -l [OR]RewriteCond %{REQUEST_FILENAME} -dRewriteRule ^.*$ - [NC,L]RewriteRule ^([0-9a-zA-Z.]+)$ demo.php?id=$1mod_rewrite 规则修正符1) R 强制外部重定向2) F 禁用URL,返回403HTTP状态码。

3) G 强制URL为GONE,返回410HTTP状态码。

4) P 强制使用代理转发。

5) L 表明当前规则是最后一条规则,停止分析以后规则的重写。

6) N 重新从第一条规则开始运行重写过程。

7) C 与下一条规则关联如果规则匹配则正常处理,以下修正符无效8) T=MIME-type(force MIME type) 强制MIME类型9) NS 只用于不是内部子请求10) NC 不区分大小写11) QSA 追加请求字符串12) NE 不在输出转义特殊字符\%3d$1 等价于 =$1RewriteEngine onRewriteCond %{HTTP_HOST} !^ [NC] RewriteRule ^(.*) / [L] RewriteEngine onRewriteRule ^test([0-9]*).html$ test.php?id=$1 RewriteRule ^new([0-9]*)/$ new.php?id=$1 [R]1、Rewrite规则简介:Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。

可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式。

如果要想用到rewrite模块,必须先安装或加载rewrite模块。

方法有两种一种是编译apache 的时候就直接安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块。

基于服务器级的(httpd.conf)有两种方法,一种是在httpd.conf的全局下直接利用RewriteEngine on来打开rewrite 功能;另一种是在局部里利用RewriteEngine on来打开rewrite功能,下面将会举例说明,需要注意的是,必须在每个virtualhost里用RewriteEngine on来打开rewrite功能。

否则virtualhost里没有RewriteEngine on它里面的规则也不会生效。

基于目录级的(.htaccess),要注意一点那就是必须打开此目录的FollowSymLinks属性且在.htaccess里要声明RewriteEngine on。

2、举例说明:下面是在一个虚拟主机里定义的规则。

功能是把client请求的主机前缀不是和203.81.23.202都跳转到主机前缀为,避免当用户在地址栏写入时不能以会员方式登录网站。

NameVirtualHost 192.168.100.8:80ServerAdmin webmaster@DocumentRoot "/web/webapp"ServerName ServerName RewriteEngine on #打开rewirte功能RewriteCond %{HTTP_HOST} !^ [NC] #声明Client请求的主机中前缀不是,[NC]的意思是忽略大小写RewriteCond %{HTTP_HOST} !^203.81.23.202 [NC] #声明Client请求的主机中前缀不是203.81.23.202,[NC]的意思是忽略大小写RewriteCond %{HTTP_HOST} !^$ #声明Client请求的主机中前缀不为空,[NC]的意思是忽略大小写RewriteRule ^/(.*) / [L]#含义是如果Client请求的主机中的前缀符合上述条件,则直接进行跳转到/,[L]意味着立即停止重写操作,并不再应用其他重写规则。

这里的.*是指匹配所有URL中不包含换行字符,()括号的功能是把所有的字符做一个标记,以便于后面的应用.就是引用前面里的(.*)字符。

例二.将输入 的域名时跳转到listen 8080NameVirtualHost 10.122.89.106:8080ServerAdmin webmaster@DocumentRoot "/usr/local/www/apache22/data1/"ServerName RewriteEngine onRewriteCond %{HTTP_HOST} ^ [NC]RewriteRule ^/(.*) / [L]3.Apache mod_rewrite规则重写的标志一览1) R[=code](force redirect) 强制外部重定向强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP 状态码。

2) F(force URL to be forbidden)禁用URL,返回403HTTP状态码。

3) G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。

4) P(force proxy) 强制使用代理转发。

5) L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。

6) N(next round) 重新从第一条规则开始运行重写过程。

7) C(chained with next rule) 与下一条规则关联如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。

8) T=MIME-type(force MIME type) 强制MIME类型9) NS (used only if no internal sub-request) 只用于不是内部子请求10) NC(no case) 不区分大小写11) QSA(query string append) 追加请求字符串12) NE(no URI escaping of output) 不在输出转义特殊字符例如:RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zed13) PT(pass through to next handler) 传递给下一个处理例如:RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理Alias /def /ghi14) S=num(skip next rule(s)) 跳过num条规则15) E=VAR:VAL(set environment variable) 设置环境变量4.Apache rewrite例子集合在 httpd 中将一个域名转发到另一个域名虚拟主机世界近期更换了域名,新域名为 , 更加简短好记。

相关文档
最新文档