我已经绞尽脑汁想了三个星期,想让 Wordpress 中的永久链接设置在 Google Cloud Platform 上正常工作。下面简要介绍一下我拥有的、正在尝试的以及已经尝试过的方法。
我在 GCP 上有两台服务器,它们都遇到了同样的问题。
服务器 1(迁移服务器) 此服务器有四个我从共享托管提供商迁移的 Wordpress 网站。除非我使用 WordPress 设置下“永久链接”部分中的第一个设置,否则这四个 WordPress 网站都存在问题。操作系统:Debian 8 网站:www.example.com
服务器 2(Google 部署) 该服务器是使用 Google 预构建的 wordpress 实例部署启动的单个 Wordpress 部署。操作系统:Debian 8 Wordpress:4.8
永久链接问题:
在 Wordpress -> 设置 -> 永久链接 -> 如果我选择“纯文本 - http://example.com/?p=123
”,我可以加载网站首页并导航到任何子页面。如果我选择除“纯文本”之外的任何内容,无论是“日期和名称”、“月份和名称”、“数字”、“帖子名称”还是“自定义结构”,那么我只能加载网站首页,无法加载任何其他页面。当我尝试加载任何其他页面时,我收到以下错误:
/loopstats/
未找到未在此服务器上找到请求的 URL。Apache /2.4.10 (Debian) 服务器位于 example.com 端口 80
现在他是真正的关键,服务器 2(GCP 部署),我使用 Google 部署管理器启动 Wordpress 实例,永久链接的默认设置是带有以下 slug 的“自定义”选项:
/index.php/%year%/%monthnum%/%day%/%postname%/
同样,如果我使用除此自定义链接之外的任何其他设置,我只能加载首页,并且所有其他链接都会损坏。
当我返回服务器 1(迁移后的服务器)并在自定义字段中输入此 slug 时,服务器 1 上的一切都正常工作。但这对我来说不起作用,因为我现在只剩下这些包含 index.php 的非常讨厌的链接。(有人告诉我这对 SEO 来说很糟糕)。
我尝试过的事情:
花了好几天时间在 Google 上搜索。我对 Wordpress 主站、一些插件网站、Reddit 都有疑问,但总是一无所获。
Apache2 Rewrite:从我在网上浏览的不同网站中,我发现如果未启用 Apache Rewrite,则可能是问题所在。我仔细检查了两个网站,确保都启用了此功能。
.htaccess
文件:我删除了.htaccess
服务器 1 上的文件,并用服务器 2(Google 部署)上的 .htaccess 文件替换它。除了允许我现在使用服务器 2 上的自定义 slug 之外,这不会给永久链接结构带来任何好处。(/index.php/%year%/%monthnum%/%day%/%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
# END Wordpress
有人知道我做错了什么吗?我希望能够使用更好的永久链接并摆脱这些非常讨厌的链接。
答案1
使用 ssh:编辑你的 apache .conf
sudo nano /etc/apache2/apache2.conf
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride ALL <----(edit from none)
Require all granted
</Directory>
...然后使用以下命令重新启动 apache2:
sudo 服务 apache2 重启