Pretty permalinks (again)

时间:2015-08-16 作者:Nelson Teixeira

我正试图在我的WordPress站点中启用永久链接。但每次我尝试更改为除默认链接外的任何永久链接选项时,帖子的链接都会转到404。如果我把它改回来,它就正常工作了。

我正在Ubuntu服务器14.04上使用WP 4.2.4和Apache 2.4.7。我做过的事情:

我有mod_rewrite 在Apache中启用+FollowSymLinks 和AllowOverride AllRewriteEngine On 在Apache服务器的配置文件中.htaccess 在我的网站的根,它正在创建罚款。我知道这一点,因为我删除、更改了永久链接选项,并重新创建了它ErrorDocument 404 /index.php 在里面.htacess我已经阅读了许多关于这个问题的页面、教程和问题,但都没有找到答案。有什么问题吗?

Edit

apachectl-M结果:

Loaded Modules:
 core_module (static)
 so_module (static)
 watchdog_module (static)
 http_module (static)
 log_config_module (static)
 logio_module (static)
 version_module (static)
 unixd_module (static)
 access_compat_module (shared)
 alias_module (shared)
 auth_basic_module (shared)
 authn_core_module (shared)
 authn_file_module (shared)
 authz_core_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 filter_module (shared)
 mime_module (shared)
 mpm_prefork_module (shared)
 negotiation_module (shared)
 php5_module (shared)
 rewrite_module (shared)
 setenvif_module (shared)
 status_module (shared)
uname-a结果:

Linux myhost 2.6.32-042stab108.8 #1 SMP Wed Jul 22 17:23:23 MSK 2015 x86_64 x86_64 x86_64 GNU/Linux
lsb\\U发布-a结果:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.2 LTS
Release:    14.04
Codename:   trusty
VPS规格:

CPU:4.8Ghz RAM:2Gb磁盘:40Gb带宽:2000Gb

Edit 2

我还发现了这个插件:

https://wordpress.org/plugins/regenerate-post-permalinks/

运行所有3个选项(帖子、页面、附件),同样的事情。

如果有人想看一下,我的博客就在这里:http://www.ideiassobrecodigo.com.br/

Edit 3 (回复@WisdmLabs)

当我开始寻找这个问题时,我的网站有以下结构:

符号链接www-in/var指向/opt/company5内的符号链接/opt/company指向/opt/其中包括我的网站。因此,要澄清:

|-opt
|  |-site1
|  |-site2
|  |-ideiassobrecodigo <---------------------------|
|  |-company <---------------<---------------------|---
|     |-site1 <SL-site1>                           ^  | 
|     |-site2 <SL-site2>                           |  |
|     |-ideiassobrecodigo <SL-ideiassobrecodigo> ->|  |
|     |-site4 <SL-site4>                              ^
|     |-site5 <SL-site5>                              |
|  |-site4                                            |
   |-site5                                            |
|-var                                                 |
   |-www <SL-company> -------->-----------------------|
(SL表示符号链接)因此我为每个站点提供了以下virtualhost配置:

<VirtualHost *:80>
        DocumentRoot /var/www/ideiassobrecodigo
        ServerName www.ideiassobrecodigo.com.br
        ServerAlias ideiassobrecodigo.com.br 

        <Directory /opt/company/ideiassobrecodigo>
                DirectoryIndex index.php index.html
                Options +FollowSymLinks
                AllowOverride All
                RewriteEngine On
                Order deny,allow
        </Directory>

        ErrorLog /var/log/apache2/error.log
        CustomLog /var/log/apache2/access.log combined
</VirtualHost>
显然,每个站点的每个文件都有不同的名称。为了尝试解决此问题,我删除了所有配置其他站点的文件,只留下这一个直接指向该站点:

<VirtualHost *:80>
        DocumentRoot /opt/ideiassobrecodigo
        ServerName www.ideiassobrecodigo.com.br
        ServerAlias ideiassobrecodigo.com.br 

        <Directory /opt/ideiassobrecodigo>
                DirectoryIndex index.php index.html
                Options +FollowSymLinks
                AllowOverride All
                RewriteEngine On
                Order deny,allow
        </Directory>

        ErrorLog /var/log/apache2/error.log
        CustomLog /var/log/apache2/access.log combined
</VirtualHost>
当我这样做的时候,我在主页上得到了一个403禁止的错误。然而,如果我放入一个随机字符串。htaccess在/opt/ideiassobrecodigo中,我转到错误500。所以这次它正确地指向了dir,但我在主页上仍然得到了403。因此,我将DocumentRoot改回/var/www/ideiassobrecodigo,它再次起作用。但是永久线又坏了。

我按照建议重新检查了权限,755到dirs,644到文件。www数据:www数据是文件夹和文件的所有者。

1 个回复
最合适的回答,由SO网友:Nelson Teixeira 整理而成

我解决了它。Apache服务器不允许vhost指向/var/www外部,所以我将所有(文档根和目录)更改为/var/www/site,并且它在所有站点上都能正常工作,permalinks工作正常。

结束

相关推荐

每页更改帖子导致404分页。需要重定向HTAccess规则

我现在更改了我的wp主题,并更改了“阅读”上的“每页帖子”wp设置,因为我想在归档页面上显示更多帖子。我对档案进行分页,所以很多页面都消失了。现在google web master tools向我显示了大量404错误。例如,/author/max/page/150/now 404s。在众多的文件夹(/作者/,/类别/,等等)中有许多这样的内容我不能简单地重定向/page/as(例如)/author/max/page/100/是有效页面。我想做的是说,“如果*/page/xxx=404,那么重定向到/pag