2019独角兽企业重金招聘Python工程师标准>>>

1.背景

为了方便,基于wordpress搭建了一个博客平台,使用一段时间后,对于wordpress的默认的连接地址配置非常有意见,其形如"?p=123"的表示,可读性太差,完全无法从地址上了解出文章的任何信息,感觉被加密了似的。WordPress强大的后台管理功能提供了便捷的修改方法,"设置"–>"固定链接",但是本站在修改后,发现除了主页之外,其它文章或页面均无法正常访问了。到底怎么回事?

主机VPS:Ubuntu 13.10 x86 Apache/2.4.6 (Ubuntu) Server,安装了wordpress的必须的软件包

2.相关知识介绍

固定链接的修改,涉及到Apache对于访问地址的动态解析,而与此密切相关的是mod_write模块。其实,WordPress主页上都已经说明了:Apache mod_rewrite 模块(可选,用于支持“固定链接”和“站点网络”功能)。

2.1 mod_rewrite

mod_rewrite 提供了基于正则表达式规则动态修改传入的请求的 URL 的方法。 这允许你以自己喜欢的任意方法映射任意 URL 到你的内部 URL 结构。它支持无限的规则,以及为每个规则附加条件,从而提供了一个真正灵活且强大的 URL 操作机制。URL 操作可以依赖于各种测试,例如服务器变量,环境变量,HTTP 头,时戳,甚至外部数据库查询等,以便完成 URL 单元匹配。这个模块在服务器上下文 (httpd.conf),虚拟主机上下文 (<VirtualHost> 指令块),目录上下文 (.htaccess 文件和 <Directory> 指令块) 对完整的 URL (包含目录信息部分和查询字符串部分) 操作。 重写结果可以导致新的规则处理,内部的后续处理,外部请求重定向,甚至透过内部代理, 这取决于你为规则附加的标志。一般而言,mod_rewrite模块的生效,都是基于相关转向规则的。而转向规则一般会被写入两个位置:

是将规则写在httpd.conf中,这样效率比较高,但缺乏灵活性。

是写在.htaccess文件中,将该文件放到需要运用该重写规则的网站目录的根目录即可。wordpress则通过.htaccess来实现"固定链接"。

2.2 .htaccess文件

.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

3 相关可能性

既然了解到其与mod_write相关,那么剩下的就是考虑mod_write功能的无法实现,到底有哪些因素可能导致。目前网络上归纳了三个最可能的情况。

mod_rewrite模块没有加载,模块没有加载的话,必然无法进行URL映射了。

相关配置没有设置,导致mod_rewrite模块无法对相应的目录应用新的规则

.haccess文件的权限不足,大多数情况下,.htacess和mod_rewrite模块是配合使用的。

根据这三种可能性,我们可以一一进行排除。

3.1 加载mod_rewrite模块

a2enmod rewrite       service apache2 restart

3.2 放开目录的重写的权限

仍然是配置/etc/apache2/sites-available/www.xxx.conf,查看两处,看去AllowOverride是否被设置为All,如果是None,则设置为All。

<Directory />

Options FollowSymLinks

AllowOverride All

</Directory>

以及

<Directory "/var/www/html">

......

AllowOverride All

......

</Directory>

3.3 查看.htaccess的权限

这个是本站在修改固定链接时,遇到的问题,默认的.htaccess并没有写权限,那么即使允许mod_rewrite对wordpress目录进行规则重写,其也无法将规则写入.htaccess文件中。首先查看wordpress的目录下有没有.htaccess文件,如果没有,则创建一个。

1

touch .htaccess

然后,对.htaccess文件进行授权。

1

chmod  755 .htaccess

即将该文件的权限转移给apache用户,apache用户是网站运行时,默认使用的用户,然后再将.htaccess的写权限授予apache用户组,主要是为了不必要的麻烦。其中,文件属主是默认拥有写权限的,不需要再授权。

3.4 验证

完成了上述的步骤之后,我们可以再次访问网站,发现改变"固定链接"后,网站可以无障碍地访问了。

4 总结

Apache的mod_rewrite的功能太强大了,我们了解到的还只是其中的一小部分,结合相关规则,其几乎可以随意地对网站的访问进行重定向。

转载于:https://my.oschina.net/ykuaile/blog/357851

WordPress 修改固定链接出错(apache2)相关推荐

  1. wp怎么设置固定链接html,Wordpress网站固定链接URL如何设置 | 小朱笔记

    wordpress设置里面是允许自定义链接形式,以提高美感.可用性和向前兼容性.(需要主机支持伪静态). wordpress固定链接设置的一些参数: %year%:基于文章发布的年份,比如2010: ...

  2. Linux 系统使用WordPress开启“固定链接设置”之后部分页面打不开(404)的解决办法...

    WordPress系统中我们设定了固定链接设置,选择了自定义结构:http://192.168.10.11/html/%postname%.html 注:%postname%文章标题的别名,文章标题是 ...

  3. 解决Nginx环境下wordpress设置固定链接打开失败问题

    本网站的结构是Linux+Nginx+Mysql+php. wp的固定链接默认是朴素模式 : https://www.dinganan.cn/?p=123 写过几篇文章后发现链接地址好难看,一眼看不出 ...

  4. 【WordPress】修改固定链接,文章链接

    很多时候,我们看到的是这个长长的链接,实在是不利于seo,那么,我们要怎么修改呢? 如何修改:

  5. WordPress更改“固定链接”后 页面404原因及解决方法(Nginx版)

    网上盛传的方法是: 在 /etc/nginx/nginx.conf文件的 loction / {} 中添加 if (-f $request_filename/index.html){rewrite ( ...

  6. WordPress5.4 解决修改固定链接404问题

    Apache的httpd.conf文件 加载模块: LoadModule rewrite_module modules/mod_rewrite.so httpd-vhosts.conf文件 保证有Al ...

  7. WordPress固定链接怎么设置为伪静态设置教程

    WordPress为什么要设置伪静态链接呢?因为设置Wordpress固定伪静态链接有利于搜索引擎优化,因为可以在各大搜索引擎收录中,静态页面收录数据和权重都是有很重要的位置. 在默认情况下,刚安装的 ...

  8. wordpress搏客伪静态固定链接设置失败的解决办法

    说句不怕大家笑话的话,做了四五年的网站了却从来不会设置网站的伪静态链接,一般都是程序自带的.即使是动态的链接我也不在乎,在乎又有什么办法呢,不会呀.今天我用一天的时间来研究wordpress设置伪静态 ...

  9. Wordpress分类目录列表时404和固定链接关系及解决方法

    环境:WordPress 5.2 第一次用WordPress做网站,整体感觉不错,但还是有些意想不到的小问题,比如分类目录的列表无法显示,而且还不好找答案,在网上找到修改"固定链接" ...

最新文章

  1. Oracle 优化器_表连接
  2. 电动力学每日一题 2021/10/14
  3. 2.3.3 spring属性注入-注解注入-全注解-配置类扫描
  4. 并发编程的 15 条建议(译)
  5. abb机器人指令手册_「ABB」ABB机器人指令模块介绍与开发过程
  6. 解决WordPress设置错误的url网站不能访问的问题
  7. Qt之Ubuntu18.04安装(一)
  8. cassini服务器源代码
  9. zabbix修改和查看登录密码
  10. 对MYSQL进行压力测试
  11. 计算机仿真的特点,计算机仿真的基本特点与基本流程.doc
  12. XILINX VIVADO2018.2官方下载全教程记录.
  13. 微信小程序 实现简单倒计时功能
  14. FTTC-BSA-AuNCs 荧光素异硫氰酸酯标记牛血清白蛋白修饰的金簇
  15. 英雄联盟怎么解除小窗口_英雄联盟手游剑姬怎么玩-英雄联盟手游剑姬玩法介绍...
  16. HTML中的src、href
  17. python使用matplotlib绘制3D图
  18. 企业微信客户端开启调试模式
  19. 德州扑克实践之三-----比较大小
  20. Java基础编写记事本

热门文章

  1. 跌了2个京东,又跌了2个小米,苹果手机终于卖不动了
  2. 成立两年估值17亿美元,这家Hinton点赞的AI芯片公司获宝马微软投资
  3. 腾讯开源业内最大多标签图像数据集,附ResNet-101模型
  4. 迁移学习比赛:OpenAI喊你重温「音速小子索尼克」
  5. 合作活动 | 鲸准产业价值峰会AI专场,共探AI商业模式
  6. Java多线程基础知识(一)
  7. OpenBSD 将迎来原生的 Hypervisor
  8. 使用bind构建本地简易dns服务器
  9. (转)对SQLSERVER数据库事务日志的疑问
  10. [置顶] “非主流”Web容器之TomJetty之让服务动起来