技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

Apache网站.htaccess实现rewrite重写失败的三个原因

作者:admin    时间:2018-2-2 15:53:4    浏览:

今天想使用.htaccess实现一个rewrite重写功能,谁知照搬其他网站的.htaccess过来后连网站都访问不了了,于是研究下使用Apache服务器的网站是如何用.htaccess实现rewrite重写的,此文记录的是本人的一点心得,对新手具有参考作用。

原因一:没有启用 rewrite_module

首先检查是否启用了 rewrite_module 。如何启用?打开 httpd.conf 文件,此文件在Apache的安装目录下。

对于windows系统,默认安装路径是:

C:\Program Files\Apache Software Foundation\Apache2.2\conf

对于Linux系统,可通过 find 命令来搜索:

find / -name httpd.conf

然后把 #LoadModule rewrite_module 前面的 # 号去掉即可。

启用rewrite_module

启用rewrite_module

最后不要忘了重启Apache,以使更改生效。

原因二:.htaccess没有RewriteEngine On

要.htaccess支持rewrite重写,必须要在前面写上一句:

RewriteEngine On

否则,.htaccess里的 RewriteRule 语句是无效的。

RewriteEngine On 不能少

RewriteEngine On 不能少

温馨提示:更改.htaccess后立即生效,无需重启Apache服务器。

原因三:正则表达式写法错误

除了上述的两个原因外,如果 RewriteRule 的正则表达式有误,也会导致 rewrite 重写失败。因此你需要确保你的正则写法无误。你可以写一个最简单的 RewriteRule 测试一下重写功能是否有效。如本案例写的:

RewriteRule ^test/index.html$ /index.html

意思是访问 /test/index.html 时会跳到 /index.html ,跳转成功则表示重写功能有效。

最后附上一条对URL重写的实例,供大家参考学习:

RewriteRule ^article/([^/]+)/([^/]+)/([^/]+)/(.*)$ /article.php?issue=$1&edition=$2&id=$3&title=$4 [L,QSA,NC]

这条语句可以对URL

/article.php?issue=1&edition=leeds&id=1394216062&title=apache-falls-to-be-started

进行重写

/article/1/leeds/1394216062/apache-falls-to-be-started

解释:

L : last,表示已是最后一条规则,.htaccess文件解析将退出。

QSA : query string append,表示追加请求串,此标记强制重写引擎在已有的替换串中追加一个请求串,而不是简单的替换。 如果需要通过重写规则在请求串中增加信息,就可以使用这个标记。

NC : no case,不区分大小写,忽略大小写。

R : redirect,重定向。

F : forbidden,禁止访问。

您可能对以下文章也感兴趣

标签: apache  htaccess  rewrite  
  • IT热文
  • 站长推荐