2008年8月4日星期一

WordPress 2.6中设置Permalinks后出现404 Not Found的解决办法

环境:
Windows xp sp2下的虚拟机VirtualBox 1.6.2,其中安装了Ubuntu 8.04
  • 使用新立得安装了LAMP(Apache 2.2.8, PHP 5.2.4-2ubuntu5.2, MySQL 5.0.51a-3ubuntu5.1),
  • phpMyAdmin 2.11.3deb1ubuntu1
  • WordPress 2.6, 目录为/var/www/wp/
  • 使用http://localhost/wp/ 能够登录、查看、发布日志。
故障:
进入setting > permalinks设置页面,将Common settings由Default改为选中Month and name,保存更改。
  • 系统提示无法对.htaccess文件自动写入更改,需要手工更新该文件。
  • 重新访问一篇日志,如http://localhost/wp/2008/08/2nd-post/,出现404 Not Found。


分析:
查看官方网站文档,按提示更新.htaccess;配置rewrite以及目录属性。

解决:
关于.htaccess:
1、在网站目录下创建.htaccess。

sudo touch /var/www/wp/.htaccess

2、查看并更改读写权限,使wordpress能自动更新该文件。

ls -la /var/www/wp/.htaccess
sudo chmod 666 /var/www/wp/.htaccess

3、进入setting > permalinks设置页面,重新设置一次Month and name,保存更改。
页面上端应当出现提示,表明已经更新了.htaccess。

关于rewrite以及目录属性:
1、加载mod_rewrite模块。

sudo a2enmod rewrite

2、查看apache站点配置。
在/etc/apache2/sites-enabled/中有000-default文件,链接到/etc/apache2/sites-available/default文件。查看内容

sudo gedit /etc/apache2/sites-enabled/default



NameVirtualHost *
<virtualhost *>
ServerAdmin webmaster@localhost

DocumentRoot /var/www/
<directory>
Options FollowSymLinks
AllowOverride None
</directory>

<directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</directory>
......
</virtualhost>

3、在其中增加虚拟站点中wordpress目录的配置。

<directory /var/www/wp/>
Options FollowSymLinks
AllowOverride All
</directory>

4、保存后重启apache,使新配置生效。

sudo apache2ctl restart

5、重新访问一篇日志,404现象消失。OK。


资源:
使用永久链接:http://codex.wordpress.org/Using_Permalinks

没有评论: