资源下载 - 从此开始!

下载我_精品源码软件教程资源网

您的位置:主页 > 网络编程 > 正文

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

2018-10-10 18:15 来源:互联网 编辑:admin

今天想使用.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,禁止访问。

打赏一下,我们会为大家提供更多优质资源!

相关文章,95%的人会看!{有内幕、有真相...}

看过本文的人还看过

关闭

微信扫一扫

站长微信账号