iOS 7 正式版发布,快来升级吧!

查看详情 关闭

.htaccess文件引发的不能访问html后缀固定链接的问题

htaccess

8月13日凌晨,P&P突然无法访问,经过检查服务器日志发现服务器流量大增,明显与访问数不符。于是第一时间想到:糟糕,被盗链了!在紧急升级服务器后(花了不少RMB啊T_T),开始着手了解如何防盗链。

由于P&P使用的是Linux主机,所以使用.htaccess文件来防盗链自然是最佳的选择,然而,就是这一次更改,让P&P再度在8月14日凌晨2点左右无法访问(可以打开主页,但是无法打开单篇文章)。在我紧张的调试了一个多小时,终于把问题结局,原来是WordPress固定链接搞的鬼

步骤还原

  1. 在网上找到防盗链的.htaccess文件内容,复制,改为自己的域名
  2. 上传到根目录
  3. 提示有同名文件,选择覆盖
  4. 防盗链成功
  5. 发现问题,文章无法打开

问题表现

可以打开主页,无法访问html或者htm结尾的文章,可以用/?p=xxx的默认形式访问,可以访问后台

尝试解决(失败)

删除.htaccess文件,问题依旧

经过搜索得知要把防盗链的.htaccess文件放在图片上传的目录而不是根目录

重新上传.htaccess到图片上传目录,问题依旧

解决方法(成功)

后来猛然想到,之前替换了根目录下的.htaccess文件,会不会这个文件重定向了到.html文件的访问

于是我在Wordpress后台更改固定链接形式为默认形式,然后再改回之前使用的“%post_name%.html”

问题解决

反思收获

  1. 一个网站可以有多个.htaccess文件
  2. 放置在任意目录的.htaccess文件都对该目录以及其子目录有效,也就是说这个.htaccess文件的有效范围是本身及子目录
  3. WordPress固定链接的更改方法是通过.htaccess文件重写实现的

WordPress博客如何设置防盗链

将以下代码复制并用记事本创建一个文件,保存为任意名字,类型为所有类型,上传到网站的图片上传目录,并把文件名改为.htaccess

<IfModule mod_rewrite.c>
# 开启Rewrite模块
RewriteEngine On

# 定义要保护的文件夹,建议只要保护上传文件夹(/wp-content/uploads/)就可以,主题文件夹之类的就算了
RewriteBase /wp-content/uploads/
#允许空的来源,因为用户可能手动输入图片网址
RewriteCond %{HTTP_REFERER} !^$ [NC]
#允许自己的网站访问啦,把yangsen.name换成你的域名
RewriteCond %{HTTP_REFERER} !yangsen.name [NC]
#允许几个常用的在线阅读器的访问
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]

#你可以添加你想要防盗链的文件后缀,用“|”隔开

RewriteRule .*\.(gif|jpg|png|bmp|jpeg|rar|zip|ipa|deb|apk)$ http://xs.to/photo/90349 [R,NC,L]
</IfModule>

请在 新浪微博腾讯微博人人网 关注我们,及时获得最新教程、资讯和精彩推荐!




分享本文:
更多

  1. 谢谢分享啊!我手快把主录文件.htaccess删除了!按你方法,在后台改固定链接形式为默认形式太感激了!方法接单明了,而且你分析得很好!