Apache Alias 和 Wordpress 的永久链接出现 404 错误

Apache Alias 和 Wordpress 的永久链接出现 404 错误

我搜索了多个页面、答案和文章,试图正确配置 Apache Alias 和 Wordpress Permalinks,但没有成功。

/var/www/
| - example.com (Custom Web App)
| - blog.example.com (Wordpress)

使用上述结构,我可以毫无问题地访问 Wordpress,包括诸如 之类的永久链接https://blog.example.com/sample-post/

我在 Apache 中添加了一个别名,如下所示:

<VirtualHost *:443>
    ServerName example.com
    DocumentRoot /var/www/example.com/public
    Alias /blog /var/www/blog.example.com

    <Directory /var/www/example.com/public>
            AllowOverride all
            Options -Multiviews
            Require all granted
    </Directory>
</VirtualHost>

进行这些更改后,重新启动 apache 并更新WordPress 设置区域中的wordpress address和,我可以通过所需的 URL 访问该网站,但永久链接返回 404 错误。site addresshttps://example.com/blog

我发现必须切换到纯 URL 才能加载帖子。我没有对文件进行任何更改.htaccess,但内容如下:

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

目标是访问 WP 帖子https://example.com/blog/sample-post/

任何帮助都将受到赞赏。

答案1

我通过改变配置解决了同样的问题。

当您使用别名 /blog 时,使用永久链接 example.com/blog/sample-post/ 访问 WP 帖子将被重定向到示例.com由 Apache 提供,因此您会收到 404 错误。

我正在使用反向代理并忽略重定向,我的设置是:

<Location /blog/>
  RewriteEngine off
  ProxyPass !
</Location>

现在为 Alias/博客我们应该将以下 RewriteRule 更改为 apache 配置以允许永久链接起作用:

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

这个对我有用。

相关内容