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

今天想使用.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 前面的 # 号去掉即可。

d9636c878b6e0b5847f65faf71b33c7a.gif

启用rewrite_module

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

原因二:.htaccess没有RewriteEngine On

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

RewriteEngine On

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

827b50041159d85d84df5d97c03c2a21.gif

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,禁止访问。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值