课题_.htaccess 详解
详解Apache下.htaccess文件的8个用法

.htaccess文件允许我们针对特定目录及其子目录修改一些服务器设置,虽然这种类型的配置最好是在服务器本身配置文件的小节部分处理,但有时我们根本没有权限访问这个配置文件,尤其是当我们在一台共享的托管主机上,大多数共享主机服务商只允许我们以.htaccess 方式来改变服务器的行为。
.htaccess文件是一个简单的文本文件,注意文件名前的“.”很重要,我们可以用自己喜欢的文本编辑器编辑它,然后上传到我们的服务器,将其放在我们想要改变服务器默认行为的目录下。
通过.htaccess文件我们可以做的事包括:为文件夹设置密码保护,创建重定向,调整PHP设置,控制文件缓存,控制服务器如何处理扩展名(例如,我们可以让一个HTML文件通过PHP模块运行,而不是简单的通过Web服务器解析它),以及改变文件返回给访问者的方式。
下面我开始介绍这个文件最常见的8种用法。
1、禁止对无索引文件的目录进行文件列表展示默认情况下,当我们访问网站的某个无索引文件(如index.html,index.htm或index.php)目录时,服务器会显示该目录的文件和子目录列表,这是非常危险的,因为它可能暴露网站的内部结构,也许不小心就将含有敏感信息的文件公之于众了,为了禁止这种行为,我们可以在网站根目录创建一个.htaccess文件,内容如下:Options –Indexes2、创建重定向或改变丢失文件的响应状态当我们从服务器请求一个找不到的文件时,默认情况下服务器会返回404状态码,浏览器和访问者便知道URL指定的位置找不到该文件,但这是一个通用的消息,没有太大的实际意义,我们希望告诉浏览器和访问者更多有用的信息,如:◆文件被永久移走状态码301告诉浏览器文件已经被永久移动到另一个位置,这样我们就可以通过.htaccess文件实现重定向了,例如,使用下面的代码可以将浏览器重定向到新的地址:Redirect 301 /path/from/htaccess/file.html /path/file.html◆文件被暂时移走状态码307告诉浏览器文件已经被移走,但这是暂时的,浏览器接收到301状态码时就会访问新地址,但不用改变文件的链接,也不会为新地址创建缓存(除非它受Cache-Control或过期头信息字段控制),浏览器每次都会继续请求源地址。
.htaccess文件使用教程1.htaccess文件介绍与创建

.htaccess必须以ASCII模式上传,最好将其权限设置为644。
.htaccess可以做大量的事情,包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件。
2.如何创建.httaccess文件
创建.htaccess文件也许会给你带来一些困难。写文件很容易,你只需要在文字编缉器(例如:写字板)里写下适当的代码。真正困难的可能是文件的保存,因为.htaccess是一个古怪的文件名(它事实上没有文件名,只有一个由8个字母组成的扩展名),而在一些系统(如windows 3.1)中无法接受这样的文件名。在大多数的操作系统中,你需要做的是将文档保存成名为:
Apache系统中的.htaccess文件(或者”分布式配置文件”提供了针对目录改变配置的方法,即,在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。
判断你的主机是否允许.htaccess,一个标志很好的是它是否支持文件夹密码保护。为达到此功能,主机服务商需要使用.htaccess(当然,少数情况下他们虽提供密码保护功能,但却并不允许你使用.htaccess)。如果你不确定自己的主机是否支持.htaccess,最好的办法是上传你自己的.htaccess文件看看是否有用,或者直接发送e-mail向你的主机服务商咨询。
1.什么是.htaccess文件
从本指南中,你将可以学习到有关.htaccess文件及其功能的知识,并用以优化你的网站。尽管.htaccess只是一个文件,但它可以更改服务器的设置,允许你做许多不同的事情,最流行的功能是您可以创建自定义的“404 error”页面。.htaccess 并不难于使用,归根结底,它只是在一个text要判断主机支持它
htaccess写法

htaccess写法htaccess文件是一个非常重要的文件,它可以帮助网站管理员控制网站的访问、安全和可用性。
在这篇文章中,我们将深入研究.htaccess 文件,并为您提供有关它的一些最佳实践。
1.什么是.htaccess?.htaccess是一个Apache服务器上的配置文件。
它通常包含一系列指令,用于控制网站的访问和其他功能。
这个文件可以用文本编辑器打开,常常位于网站根目录下。
2.如何使用.htaccess?许多网站管理员使用.htaccess文件来控制网站的访问和保护数据,包括防止网站遭受黑客攻击和DOS攻击等。
这个文件也可以用于重定向URL和更改网站的默认目录等。
3.示例.htaccess文件以下是一个PHP应用程序的示例.htaccess文件:#开启URL重写RewriteEngine on#将请求指向index.phpRewriteRule ^(.*)$ /index.php?path=$1 [NC,L]#拒绝特定用户访问Order deny,allowDeny from 192.168.0.1Allow from all#设置错误页面ErrorDocument 404 /404.php4.重定向URL.htaccess文件可以用于重定向URL。
例如,如果您更改了网站的文件名或目录结构,您可以使用.htaccess文件将旧的URL重定向到新的URL。
这可以帮助避免在搜索引擎中出现404错误页面的情况。
5.防止机器人爬取网站如果您希望防止机器人爬取您的网站,您可以使用.htaccess文件来设置呈现计算机更困难的障碍。
这可以在一定程度上保护您的网站免受机器人攻击。
6.启用Gzip压缩为了让用户更快速地加载网站,您可以启用Gzip压缩功能。
这可以通过.htaccess文件来实现,从而为用户提供更好的体验。
7.总结在本文中,我们讨论了.htaccess文件及其功能。
我们提供了一些htaccess的最佳实践,包括重定向URL、防止机器人爬取网站、启用Gzip压缩等。
".htaccess"解释及几个简单应用

.htaccess是什么?.htaccess叫分布式配置文件,它提供了针对目录改变配置的方法--- 在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录。
并且子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。
一般来说,如果你的虚拟主机使用的是Unix系统或Linux系统,或者任何版本的Apache网络服务器,从理论上都是支持" .htaccess"的。
如何建立.htaccess?在我们使用的windows(瘟到死)主机上创建.htaccess文件是很困难的。
写文件倒很容易,你只需要在文字编缉器(例如:记事本)里写下适当的代码。
困难的是文件的保存,因为.htaccess 是一个古怪的文件名,其实它并没有文件名,只有一个由8个字母(htaccess)组成的扩展名,而在windows系统中这是无法接受的文件名。
因此,这里有3个方法可以实现。
方法一:保存文件的时候将文档保存成名为“.htaccess”(包括引号)或者htaccess.txt亦或者1.htaccess。
再将其上传到服务器上,之后直接使用FTP软件来重命名。
方法二:保存文件的时候选择文件—>另存为,保存类型选所有文件,然后文件名输入.htaccess ,这样就OK啦o方法三:直接在你的Unix或Linux虚拟主机上建立。
.htaccess简单应用htaccess是什么?.htaccess是在Apache HTTP Server这款服务器架设软件下的一个对于系统目录进行各种权限规则设置的一个文件,存在于Linux操作系统中。
比较常见的是定义默认首页名称,404页面,301转向,等等,还有更多的功能比如伪静态,限制图片外链,限制下载,密码保护,去除页面广告等等,还有非常多的功能就不一一列举。
其实这些功能大多可以在cPanel控制面板来进行设置的(相当于是.htaccess的图形化界面)。
四个例子实战讲解.htaccess文件rewrite规则

.htaccess 文件大家都不陌生吧。
不认识的自己去搜一下……顺便告诉你,这是个好东西,值得一学。
似乎网上关于.htaccess 编写方法的教程很有限,相信博主们也没有几个是自己写的吧?我在这里就搜了几个常用规则,总结一下rewrite 规则的用法。
当然这只是.htaccess 功能的一小部分,但是相当实用。
如果熟练掌握rewrite 规则的编写,能够加强对网站URL 的控制,对用户体验、SEO 都十分有利。
注:所有规则来源于网络,我只作解释。
一、防盗链功能1234RewriteEngine OnRewriteCond %{HTTP_REFERER} !^http://(.+.)?/ [NC] RewriteCond %{HTTP_REFERER} !^$ RewriteRule .*.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]逐行讲解一下:1.打开Rewrite 功能。
有可能服务器设置里已经是全局下打开了,但是多写也没事。
2.RewriteCond 指令,定义生效条件,用于寻找匹配条件的地址。
后面内容用正则表达式匹配。
代表含义是发送的请求不由 而来,那就是盗链啦。
末尾的[NC]代表忽略大小写。
3.发送请求的主机前缀不为空。
4.RewriteRule 指令,定义重写规则,把匹配的地址按此规则重写。
本例中把这些后缀为这些图片格式的,都替换到某一个图片下。
[L]表示这是最后一段规则。
只这四行就实现了防盗链是不是很神奇(- -||),编写起来是不是又觉得复杂。
这里总结了几个常用参数(不是全部):RewriteCond 下:[NC] 不分字母大小写[OR] 用于连接下一条规则RewriteRule 下:[R] 强制重定向,[R=code] code 默认为302[F] 禁用URL ,返回HTTP 403 错误[L] 这是最后一条规则,之后内容无用还有一篇关于正则表达式的教程(很详细):/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm二、网址规范化1234Options +FollowSymLinks rewriteEngine on rewriteCond %{http_host} ^ [NC] rewriteRule ^(.*)$ /$1 [R=301,L] 这个是把所有二级域名都重定向到 的例子,现在看来是不是很简单了?需要注意的是,这里的Options +FollowSymLinks 不是必须的,但在某些服务器如果不设置FollowSymLinks ,可能引起500错误。
. 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状态码。
Apache中的.htaccess文件

Apache中的.htaccess文件在Apache中有一种特殊的文件,.htaccess文件或者称为分布式配置文件,提供了针对每个目录设置不同的配置的方法。
也就是说在每个目录下都可以有一个.htaccess文件,这个文件中可以设置一些Apache配置指令,这些指令对于本目录及本目录的子目录生效。
修改.htaccess文件名这个文件的文件名就叫.htaccess,即文件名为空,后缀为htaccess。
如果想修改这个文件名,那必须在Apache的主配置文件中使用AccessFileName指令来进行修改。
如果洪哥想使用.splaybow作为分布式配置文件的名称,那就在httpd.conf中设置:AccessFileName .splaybow.htaccess文件中可以使用哪些指令一般来说,.htaccess文件中可以使用的指令、语法与主配置文件(httpd.conf)中是完全一样的。
但是,在主配置文件中可以通过AllowsOverride指令来设置在.htaccess文件中哪些指令是有效的,否则即使设置了,也没有用。
比如AddDefaultCharset指令,如果我们想要在.htaccess文件中进行配置,那么我们在主配置文件中进行一些设置。
首先要确认一下AddDefaultCharset指令是否可用于.htaccess 文件中,这需要翻翻Apache的配置手册,翻完之后,我们发现是可以的。
然后,由于AddDefaultCharset指令是属于FileInfo这个覆盖项的,所以主配置文件中要允许FileInfo 能被覆盖,命令如下:AllowOverride FileInfo说明一下,刚才讲的指令的作用域和覆盖项,举例AddDefaultCharset指令看看:作用域server config, virtual host,directory, .htaccess覆盖项FileInfo关于Apache中的.htaccess文件,本文就介绍这么多,希望对您有所帮助,谢谢!。
.htaccess使用方法介绍

目录重新和重定向∙强制www∙强制www通用方法∙强制non-www∙强制non-www通用方法∙强制HTTPS∙强制HTTPS 通过代理∙强制添加末尾斜杠∙取掉末尾斜杠∙重定向到一个页面∙目录别名∙脚本别名∙重定向整个网站∙干净的URL安全∙拒绝所有访问∙拒绝所有访问(排除部分)∙屏蔽爬虫/恶意访问∙保护隐藏文件和目录∙保护备份文件和源代码文件∙禁止目录浏览∙禁止图片盗链∙禁止图片盗链(指定域名)∙密码保护目录∙密码保护文件∙通过Referrer过滤访客∙防止被别的网页嵌套性能∙压缩文件∙设置过期头信息∙关闭eTags标志其它∙设置PHP变量∙Custom Error Pages∙强制下载∙阻止下载∙运行跨域字体引用∙Auto UTF-8 Encode∙切换PHP版本∙禁止IE兼容视图支持WebP图片格式重新和重定向注意:首先需要服务器安装和启用mod_rewrite模块。
()强制wwwRewriteEngine onRewriteCond %{HTTP_HOST}^example\.com [NC]Re writeRule ^(.*)$ /$1[L,R=301,NC]强制www通用方法RewriteCond %{HTTP_HOST}!^$RewriteCond %{HTTP_HOST}!^www\. [NC]RewriteCond %{HTTPS}s ^on(s)|RewriteRule ^ http%1://www.% {HTTP_HOST}%{REQUEST_URI}[R=301,L]这种方法可以使用在任何网站中。
Source强制non-www究竟是WWW好,还是non-www好,没有定论,如果你喜欢不带www的,可以使用下面的脚本:RewriteEngine onRewriteCond %{HTTP_HOST}^www\.example\.com [NC]RewriteRule ^(.*)$ /$1[L,R=301]强制non-www通用方法RewriteEngine onRewriteCond %{HTTP_HOST}^www\.RewriteCond %{HTTPS}s^on(s)|offRewriteCond http%1://%{HTTP_HOST}^(https?://)(www\.)?(.+)$ RewriteRule ^ %1%3%{REQUEST_URI}[R=301,L]强制HTTPSRewriteEngine onRewriteCond %{HTTPS}!onRewriteRule (.*)https://%{HTTP_HOST}%{REQUEST_URI}# Note: It's also recommended to enable HTTP Strict Transport Sec urity (HSTS) # on your HTTPS website to help prevent man-in-the-middle attacks.# See https:///en-US/docs/Web/S ecurity/HTTP_strict_transport_security<IfModule mod_headers.c>Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"</IfModule>强制HTTPS 通过代理如果你使用了代理,这种方法对你很有用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.htaccess是什么.htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法,即,在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录。
作为用户,所能使用的命令受到限制。
管理员可以通过Apache的AllowOverride 指令来设置。
概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。
通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。
如果需要使用.htaccess 以外的其他文件名,可以用AccessFileName指令来改变。
例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:AccessFileName .config 。
笼统地说,.htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。
工作原理.htaccess文件(或者"分布式配置文件")提供了针对每个目录改变配置的方法,即在一个特定的目录中放置一个包含指令的文件,其中的指令作用于此目录及其所有子目录。
说明:如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。
例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:AccessFileName .config通常,.htaccess文件使用的配置语法和主配置文件一样。
AllowOverride指令按类别决定了.htaccess文件中哪些指令才是有效的。
如果一个指令允许在.htaccess中使用,那么在本手册的说明中,此指令会有一个覆盖项段,其中说明了为使此指令生效而必须在AllowOverride指令中设置的值。
(不)使用.htaccess文件的场合一般情况下,不应该使用.htaccess文件,除非你对主配置文件没有访问权限。
有一种很常见的误解,认为用户认证只能通过.htaccess文件实现,其实并不是这样,把用户认证写在主配置文件中是完全可行的,而且是一种很好的方法。
.htaccess文件应该被用在内容提供者需要针对特定目录改变服务器的配置而又没有root权限的情况下。
如果服务器管理员不愿意频繁修改配置,则可以允许用户通过.htaccess文件自己修改配置,尤其是ISP在同一个机器上运行了多个用户站点,而又希望用户可以自己改变配置的情况下。
虽然如此,一般都应该尽可能地避免使用.htaccess文件。
任何希望放在.htaccess文件中的配置,都可以放在主配置文件的<Directory>段中,而且更高效。
避免使用.htaccess文件有两个主要原因。
首先是性能。
如果AllowOverride启用了.htaccess文件,则Apache需要在每个目录中查找.htaccess文件,因此,无论是否真正用到,启用.htaccess都会导致性能的下降。
另外,对每一个请求,都需要读取一次.htaccess文件。
还有,Apache必须在所有上级的目录中查找.htaccess文件,以使所有有效的指令都起作用(参见指令的生效),所以,如果请求htdocs/example中的页面,Apache必须查找以下文件:/.htaccess.htaccess/htdocs/.htaccess/ /htdocs/example/.htaccess总共要访问4个额外的文件,即使这些文件都不存在。
(注意,这可能仅仅由于允许根目录"/"使用.htaccess ,虽然这种情况并不多。
)其次是安全。
这样会允许用户自己修改服务器的配置,这可能会导致某些意想不到的修改,所以请认真考虑是否应当给予用户这样的特权。
但是,如果给予用户较少的特权而不能满足其需要,则会带来额外的技术支持请求,所以,必须明确地告诉用户已经给予他们的权限,说明AllowOverride设置的值,并引导他们参阅相应的说明,以免日后生出许多麻烦。
注意,在/htdocs/example目录下的.htaccess文件中放置指令,与在主配置文件中<Directory /htdocs/example>段中放置相同指令,是完全等效的。
/ htdocs/example目录下的.htaccess文件的内容:AddType text/example .exmpd.conf文件中摘录的内容:<Directory htdocs/example>AddType text/example .exm</Directory>但是,把配置放在主配置文件中更加高效,因为只需要在Apache启动时读取一次,而不是在每次文件被请求时都读取。
将AllowOverride设置为none可以完全禁止使用.htaccess文件:AllowOverride None指令的作用范围.htaccess文件中的配置指令作用于.htaccess文件所在的目录及其所有子目录,但是很重要的、需要注意的是,其上级目录也可能会有.htaccess文件,而指令是按查找顺序依次生效的,所以一个特定目录下的.htaccess文件中的指令可能会覆盖其上级目录中的.htaccess文件中的指令,即子目录中的指令会覆盖父目录或者主配置文件中的指令。
疑难解答如果在.htaccess文件中的某些指令不起作用,可能有多种原因。
最常见的原因是AllowOverride指令没有被正确设置,必须确保没有对此文件区域设置AllowOverride None 。
有一个很好的测试方法,就是在.htaccess文件随便增加点无意义的垃圾内容,如果服务器没有返回了一个错误消息,那么几乎可以断定设置了AllowOverride None 。
在访问文档时,如果收到服务器的出错消息,应该检查Apache的错误日志,可以知道.htaccess文件中哪些指令是不允许使用的,也可能会发现需要纠正的语法错误。
.htaccess工具不会写的朋友,在这介绍一款很不错.htaccess的重定向—URL重写工具rewriting-tool--------------------------------------------------------------------------------htaccess语法教程RewriteEngine OnRewriteCond %{HTTP_HOST} ^( \.)?xxx\.com$RewriteCond %{REQUEST_URI} !^/blog/RewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ /blog/$1# 没有输入文件名的默认到到首页RewriteCond %{HTTP_HOST} ^( \.)?xxx\.com$RewriteRule ^(/)?$ blog/index.php [L]下面我开始解说一下上面的意思:【RewriteEngine On】表示重写引擎开,关闭off,作用就是方便的开启或关闭以下的语句,这样就不需要一条一条的注释语句了。
【RewriteCond %{HTTP_HOST} ^这是重写条件,前面%{HTTP_HOST}表示当前访问的网址,只是指前缀部分,格式是不包括―‖和―/‖,^表示字符串开始,$表示字符串结尾,\.表示转义的. ,如果不转义也行,推荐转义,防止有些服务器不支持,?表示前面括号.出现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表示反向匹配,引用的是前面第一个圆括号的成分,即^(.*)$中的.* ,其实这儿将会出现一个问题,后面讨论。
【RewriteCond %{HTTP_HOST} ^】【RewriteRule ^(/)?$ blog/index.php [L]】这两句的意思是指请求的host地址是是,如果地址的结尾只有0个或者1个―/‖时,将会重写到子目录下的主页,我猜想这主要因为重写后的地址是不能自动寻找主页的,需要自己指定。
现在说说出现的问题,RewriteRule ^(.*)$ /blog/$1 前部分^(.*)$ 将会匹配当前请求的url。
例如:请求网址是到底是匹配整,还是只匹配/a.html即反斜杠后面的成分,还是只匹配a.html。
答案是:根据RewriteBase规则规定,如果rewritebase 为/,将会匹配a.html,不带前面的反斜杠,所以上条语句应该写成RewriteRule ^(.*)$ blog/$1(不带/),不过实际应用上带上前面的反斜杠,也可以用,可能带不带都行。
现在问题出来了,如果不设置rewritebase 为/ ,将会匹配整个网址,显然这是错误的,所以应该添加这条:RewiteBase /还有一个问题是,不能保证每个人输入的网址都是小写的,如果输入大写的呢,linux系统是区分大小写的,所以应该在RewriteCond后添加[NC]忽略大小写的。
至此,完整的语句应该是:RewriteEngine OnRewiteBase /RewriteCond %{HTTP_HOST} ^( \.)?xxx\.com$ [NC]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ blog/$1# 没有输入文件名的默认到到首页RewriteCond %{HTTP_HOST} ^( \.)?xxx\.com$ [NC]RewriteRule ^(/)?$ blog/index.php [L]如果后面还继续有语句的,就不应该加上最后的[L],因为这是表示最后一条语句的意思。