【问题标题】:wordpress permalinks not working - htaccess seems ok but getting 404 error on pageswordpress 永久链接不起作用 - htaccess 似乎还可以,但在页面上出现 404 错误
【发布时间】:2013-10-24 09:50:28
【问题描述】:

我将永久链接结构更新为 /%postname%/,这将我的 .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

但我仍然在页面上收到 404 错误。我还需要更改其他设置吗?

编辑:如果它有助于 apache 日志似乎直接在永久链接文件夹中查找。即:

[Wed Oct 16 11:12:32 2013] [error] [client xx.xx.xx.xxx] File does not exist: /var/www/exampledomain/news, referer: http://exampledomain.com/

【问题讨论】:

标签: wordpress permalinks


【解决方案1】:

对于登陆此页面的其他人 - 另一个问题可能是(如果您使用 Apache 作为 Web 服务器)是您的 httpd.conf 或您的 sites-available/sitename.conf 文件需要编辑。

您的网络目录需要允许 .htaccess 文件覆盖其设置。

在文件中查找您的网络目录 - 它将位于 conf 文件的大部分或被隔离到 VirtualHost 部分。

<Directory /path/to/site>
     #add the following setting to allow .htaccess in your web dir to work
     AllowOverride FileInfo

     #other settings ---

</Directory>

这将允许您在 WordPress 中根据需要设置 WordPress URL。

***已编辑 - 谢谢 nietonfir 更新。首先使用最少的权限。如果这不起作用,请将AllowOverride FileInfo 替换为AllowOverride All

【讨论】:

  • 这是部分正确的。 AllowOverride FileInfo 通常就足够了,请参阅 apache documentation。您应该始终争取最小权限原则。
  • 感谢 MTLHD777 - 这对我也有帮助。
  • 谢谢.. 这帮助我用 vagrant 配置 wordpress。
  • 感谢 MTLHD777,它现在​​可以工作了!但就我而言,插入“AllowOverride FileInfo”设置的文件不是/etc/apache2/httpd.conf,而是/etc/apache2/sites-available/default。
  • 这救了我的命!
【解决方案2】:

可能有多种因素阻止了重写规则的工作。我的 ubuntu 服务器需要进行 3 项更改才能使永久链接正常工作。

在较新版本的 apache2 中,您需要启用该模块:

sudo a2enmod rewrite
sudo service apache2 restart

您可能还需要修改 apache2.conf 文件。

sudo nano /etc/apache2/apache2.conf

将您的网络目录覆盖规则更改为AllowOverride All

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

之后,再次重新启动服务。

WordPress 安装目录中的 .htaccess 文件需要由网络服务器拥有或可读/可修改。

这可以通过将所有者更改为 www-data(通常是网络服务器用户)或更改权限来完成。

sudo chown www-data /var/www/wordpress-install/.htaccess 

sudo chmod 664 /var/www/wordpress-install/.htaccess

登录到您的 Wordpress 管理后端并保存永久链接设置,它们应该可以正常工作。

【讨论】:

  • 支持非常完整的答案!
  • 必须记录下我为未来的自己所经历的疯狂!
  • 在我的例子中,AllowOverride All 子句失败了
  • 这个答案对我帮助很大。
  • 这是最好的答案。对 apache2.conf 文件的更改也对我有用。非常感谢!
【解决方案3】:

现在已经解决了。我没有启用 mod_rewrite。所以我这样做了:

$ sudo a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
  service apache2 restart
$ service apache2 restart
 * Restarting web server apache2                                                                              

【讨论】:

  • 事实上这解决了我的问题。我认为 AllowOverride 是问题所在。
  • 谢谢...我错过了同样的事情:):)
  • 在我的情况下,这和AllowOverride FileInfo 是必要的才能使其工作。
【解决方案4】:

你会想要告诉 apache 跟随你的 .htaccess 文件。您可以通过编辑 apache.conf 文件来做到这一点

$sudo nano /etc/apache2/apache.conf

向下滚动到该行 默认情况下它将是:

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

将 AllowOverride 的值更改为 All 现在它变为:

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

按 ctrl+x 并按 y 保存配置文件。为了对服务器进行此更改,首先启用 mod_rewrite by。

$ sudo a2enmod rewrite

然后重启服务器

$ sudo service apache2 restart

完成!

来源:https://www.wst.space/riddling-with-wordpress-permalink-setup-issues/

【讨论】:

    【解决方案5】:

    使用下面的 .htaccess 代码,只需将您的项目名称(位于 www 目录中)放在下面的代码中

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

    谢谢

    【讨论】:

      【解决方案6】:

      我遇到了同样的问题,还有一件事要寻找。

      为了让 wordpress 永久链接正常工作,您需要执行以下操作:

      1. 确保您对 wordpress 目录中的文件和文件夹具有正确的权限模式:
        sudo find . -type f -exec chmod 644 {} +
        sudo find . -type d -exec chmod 755 {} +

      2. 对于永久链接结构,请确保在 apache 中启用 mode_rewrite
        sudo a2enmod rewrite
        sudo service apache2 restart

      【讨论】:

        【解决方案7】:

        还要检查这是否描述了您的问题:

        • htaccess 和 mod_rewrite 设置正确
        • 某些永久链接出现 404 错误,而其他永久链接则没有

        确保与您的 Wordpress 安装相同的文件夹中不存在名称与 Wordpress 永久链接匹配的现有 .php 文件或目录。

        例如,如果您有以下 Wordpress 页面永久链接:

         example.com/name_one/
         example.com/name_two/
        

        包含您的 Wordpress 安装的目录包括以下文件:

         name_one.php
        

        那么这将是结果:

        更重要的是,第二个 URL 将给出 404 而不是运行 name_one.php,这意味着这个问题很难诊断,因为它可能会给出与错误编写的 .htaccess 文件相同的症状。

        【讨论】:

          【解决方案8】:

          如果您在 ubuntu 上设置新站点或克隆站点,请记住符号链接站点配置文件,例如/etc/apache2/sites-available/your-file.conf/etc/apache2/sites-enabled 文件夹,以便 apache 加载它。


          只需运行:sudo a2ensite your-file.conf,然后运行sudo service apache2 reload

          sudo a2dissite your-file.conf 删除符号链接,即禁用配置。

          【讨论】:

            【解决方案9】:

            WAMP 用户 (Windows):某些版本的 WAMP(所有版本?)默认情况下不启用 mod_rewrite 或允许遵循 SymLinks。要启用所需的功能,请导航至apache/conf/httpd.conf file,使用文本编辑器打开并取消注释LoadModule rewrite_module modules/mod_rewrite.so 行(即删除行前的井号/井号)。然后在同一个文件的更下方,有一个以“Options FollowSymlinks”行开头的部分。将该部分的第二行从“AllowOverride none”更改为AllowOverride all。保存编辑的 httpd.conf 并重新启动所有 WAMP 模块。您的固定链接现在应该可以使用了。

            For more details, Fixing Permalink Problems

            【讨论】:

              【解决方案10】:

              还有另一种可能性:我刚刚更新了我的 macOS,它总是搞砸了 Apache 配置文件。除此之外,我还必须重新启用mod_rewrite 模块。找到写着的那一行,

              #LoadModule rewrite_module libexec/apache2/mod_rewrite.so
              

              并删除哈希,因此它说,

              LoadModule rewrite_module libexec/apache2/mod_rewrite.so
              

              【讨论】:

                【解决方案11】:

                如果您使用的是 Apache,请仔细检查 VirtualHost 中的 Directory 是否有错误,如果您输入了错误的目录,Apache 不会警告您:

                <Directory /var/www/html/site/wordpress>
                  Options FollowSymLinks
                  AllowOverride Limit Options FileInfo
                  DirectoryIndex index.php
                  Require all granted
                </Directory>
                <Directory /var/www/html/site/wordpress/wp-content>
                  Options FollowSymLinks
                  Require all granted
                </Directory>
                

                【讨论】:

                  猜你喜欢
                  • 2019-06-30
                  • 2014-06-16
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-12-21
                  • 2019-06-19
                  相关资源
                  最近更新 更多