apache配置rewrite及.htaccess文件
业务需求:单独部署Apache服务来做图片服务器
1.环境:
1.1腾讯云主机,初始化安装环境,最小化安装centos7.4 x86_64位
系统版本:
1.2httpd服务安装方式:yum 安装
yum install httpd -y
httpd源码包下载地址:
http://archive.apache.org/dist/httpd/
httpd服务版本:
提示:只需要安装apache服务足够提供图片服务器应用了
1.3开启Rewrite功能模块:
说明:在centos7的系统上,yum安装httpd服务,默认安装的apache服务的版本是2.4.6,它默认已经安装好了支持Rewrite功能模块
补充:在centos6的系统上,yum安装httpd服务,默认安装的apache服务的版本是2.2.15
并且Apache/2.4.6 默认支持的模块为101个,而apache2.2.x以下版本默认才支持61个模块
2、apache不同版本开启rewrite功能介绍:
在apache1.x版本和apache2.2.x版本以及apache2.4.x开启rewrite功能的方式是不一样的
2.1、 Apache 1.x
Apache 1.x 的用户请检查 conf/httpd.conf 中是否存在如下两段代码:
** Apache 1.x版本配置Apache配置文件httpd.conf实现rewrite**
找到
没有的自己添加,然后之间写入你的rewrite规则,例如:
注意:如果网站使用通过虚拟主机来定义,请务必加到虚拟主机配置,即 <VirtualHost> 中去,如果加在虚拟主机配置外部将可能无法使用
2.2、 Apache 2.2.15
Apache 2.2.15版本的用户请检查 conf/httpd.conf 中是否存在如下一段代码:
注:如果前面有#,将其去掉。并且保证你的apache文件里有mod_rewrite.so文件(1.X版的要有mod_rewrite.c)。
2.3 apache2.4.6版本:
(已经测试验证是成功的)
浏览器请求链接:
http://img.yb898.cn/q/12345/2016/07/28/1520924032.png
http://img.yb898.cn/12345.2016.07.28/1520924032.png
http://img.yb898.cn/uploads/picture/2016/07/28/1520924032.png
文件存放路径:
提示:
一个常见的问题:配置完rewrite后有时会显示Forbidden You don’t have permission to access /data/www/images on this server.这样的错误。
加上Options FollowSymLinks就行了,注意不能加Indexes,这个表示显示目录(根目录没有index.html的情况下就显示文件夹的目录结构)。
3.让apache支持.htaccess
3.1对于apache1.x的版本:
找到#AccessFileName .htaccess把前面的#注释去掉
找到:
把里边的AllowOverride None 改为 Allow Override All 这样.htaccess文件才能启用。
3.2、对于apache2.x的版本
找到#AccessFileName .htaccess把前面的#注释去掉
找到:
把参数 Allowoverride All添加上,这样.htaccess文件才能启用。
3.3、针对apache2.4.6举例:
直接把上面的代码写入到.htaccess文件,并且把.htaccess文件放到站点或者图片的根目录下,重启apache就行了。
为了安全起见,在httpd.conf文件添加如下参数禁止.htaccess文件通过浏览器请求被下载
一般的apache以上配置就行了,但我的还不行,所以研究了一下apache的配置文件httpd.conf发现了这样一个参数:
**
AccessFileName ht.access**
** 意思是:**AccessFileName定义每个目录下的访问控制文件的文件名,缺省为.htaccess (大多数人直接就是.htaccess,所以好多网上教程都没写这步,而我的是ht.access),可以通过更改这个文件,来改变不同目录的访问控制限制。
将ht.access改为 .htaccess 重启apache就行了。
AccessFileName .htaccess
题外:.htaccess位置问题:htaccess文件(或者"分布式配置文件")提供了针对每个目录改变配置的方法,即在一个特定的目录中放置一个包含指令的文件,其中的指令作用于此目录及其所有子目录。(每一个文件夹下都可以有个.htaccess文件)
**同时rewrite规则写入到.htaccess 配置文件的一个好处就是:**在每次新添加规则到.htaccess 文件中时,apache服务不需要重启,就直接可以生效
httpd.conf去掉注释参数如下:亲测可用
[root@VM_82_178_centos ~]# grep -vE ‘#|$’ /etc/httpd/conf/httpd.conf
4.httpd.conf开启IncludeOptional参数
配置文件/etc/httpd/conf/httpd.conf中开启IncludeOptional参数,使每个vhost虚拟主机单独 写到一个配置文件中
centos7行httpd服务的相关的 启动命令如下:
查看apache服务状态:
测试apache服务:
http://img.yb898.cn/q/12345/2016/07/28/1520924032.png
http://img.yb898.cn/12345.2016.07.28/1520924032.png
http://img.yb898.cn/uploads/picture/2016/07/28/1520924032.png
参考文档:
https://www.cnblogs.com/CheeseZH/p/5169352.html
https://www.cnblogs.com/mrcln/p/5635515.html
https://www.cnblogs.com/miketwais/p/mod_rewrite.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求