Wordpress永久链接404未找到

时间:2016-03-31 09:56:41

标签: php wordpress apache .htaccess buddypress

我想将我的固定链接结构修改为/%postname%/,以便在wordpress网站服务器上使用Buddypress。

经过一些试验,我遇到了一些麻烦,即使我在不​​同的论坛搜索,我也不知道如何解决它。

我的.htaccess权限适用于试用666,因此wordpress必须修改此文件,但不会(在我的服务器安装时修改最后一个文件)。在数据库中,永久链接结构成功传递到%postname%。

现在,我想要访问的所有页面都有404错误。

.htaccess文件:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

我运行Apache,所以强制选择vars,我在wp-include / vars.php中修改了这个:

//$is_apache = (strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false || strpos($_SERVER['SERVER_SOFTWARE'], 'LiteSpeed') !== false);
$is_apache = 1;

我现在要做什么?

# 编辑:我重新安装了它,重新尝试所有这些,同样的问题...... Apache是​​该文件的所有者,所以我真的不明白......

6 个答案:

答案 0 :(得分:3)

如果您能够访问wp-admin面板,请尝试将永久链接结构更新为&#34; Plain&#34;然后检查你是否仍然收到404页错误。

答案 1 :(得分:1)

好的,我已经解决了这个问题。

问题,我在我的问题解释中没有指明它,是我使用Virtualhost(我在这个服务器上也有一个监控网站,所以我想把所有的任务,日志等分开......),并且虚拟主机和此指令存在问题:

RewriteBase /

事实上,这在普通的apache环境中工作,但在虚拟主机中却没有。

所以我要做的就是将我的.htaccess内容移到vhost conf.d文件中:

<VirtualHost *:80>
    ServerAdmin nfrbezar@vdbassocies.fr
    ServerName intranet.vdb.local
    ServerAlias intranet

    DocumentRoot /var/www/vhosts/intranet/html

    ErrorLog /var/www/vhosts/intranet/logs/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/www/vhosts/intranet/logs/access.log combined

    <Directory "/">
       RewriteEngine On
       AllowOverride None
       Allow from 10.1.1.0/8

       <IfModule mod_rewrite.c>
            RewriteEngine On
            RewriteBase /
            RewriteRule ^index\.php$ - [L]
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule . /index.php [L]
        </IfModule>

    </Directory>

</VirtualHost>

通过这种方式,它现在可以工作了!

enter image description here

很抱歉没有告诉你它是虚拟主机,我认为这对解决问题很重要,即使我认为它是一个apache问题。

答案 2 :(得分:1)

当我在使用apache服务器的aws ubuntu机器中部署我的wordpress网站时,我也遇到了同样的问题 如果你在/ var / www / html中部署了wordpress网站,我们必须在000-default.conf中添加这一行

    <Directory /var/www/html>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
    </Directory>

然后我们必须重启apache服务器sudo service apache2 restart

答案 3 :(得分:0)

根据Wordpress的许可,http应该是604.应用此权限并进行检查。

600 -rw-------  /home/user/wp-config.php
604 -rw----r--  /home/user/cgi-bin/.htaccess
600 -rw-------  /home/user/cgi-bin/php.ini
711 -rwx--x--x  /home/user/cgi-bin/php.cgi
100 ---x------  /home/user/cgi-bin/php5.cgi

答案 4 :(得分:0)

还要确保具有必要权限的.htaccess位于/ var / www / html中,即使wordpress安装位于其他文件夹中也是如此

答案 5 :(得分:0)

就我而言,它是缓存(Redis 用作对象缓存)。 更改永久链接设置后,WordPress 使用了新的 URL,但都导致了 HTTP 404 Not Found 错误。 刷新缓存(例如使用 WP CLI、wp @production cache flush)修复了该问题。