【发布时间】:2018-07-05 14:08:59
【问题描述】:
当永久链接设置为“普通”以外的任何内容(其中普通 = http://example.com/?p=123 和“漂亮” URL = http://example.com/sample-post/ - 时,我对 old WordPress problem 有一个关于永久链接失败(404 错误)的变体例如文章标题中的 URL 内容)。
我第一次在虚拟而不是专用服务器(Hetzner 托管)上启动站点,至少我能够轻松地读取 httpd.conf 设置和其他服务器配置。
在这里回顾一下,问题在于 WordPress 和默认服务器设置通常都没有准备好允许“漂亮” URL 开箱即用的 URL 重写。以前在专用服务器上遇到此问题时,我会确保将 AllowOverride 设置为“全部”或“[目录]”,然后使用此传统求解器将 .htaccess 文件放入 Web 的文档根目录:
# 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
但是,这在我的 Hetzner 服务器上不起作用。我将上面的代码放入 .htaccess 文件中,正确设置权限并重新启动。但是首页仍然显示文章列表的链接,但文章本身仍然会抛出那个旧的 404 错误。
我对核心服务器指令的唯一访问是通过 Plesk 在部分和单选按钮等中滴灌出来。我什至无法打开 httpd 设置只读以查看 AllowOverride 是如何设置的。 Hetzner 认为这是一个“软件问题”,因此不受支持。
Plesk 中有一个部分,您可以在其中添加额外的 Apache 和 Nginx 指令(对于 Apache,http 和 https 有重复框)。我在 Apache 框中尝试了这个并重新启动,但它没有帮助(显然这不是我写的实际 URL):
<Directory "/var/www/vhosts/example.com/httpdocs/">
AllowOverride All
</Directory>
如果有人对我如何获得通常的重写修复有任何建议,在这种情况下,将不胜感激。
【问题讨论】:
-
你在 Apache 中激活了 mod_rewrite 吗? httpd.apache.org/docs/2.4/mod/mod_rewrite.html
-
是的,刚才。它没有被激活。检查它是否正确激活 # grep -i LoadModule /etc/httpd/conf/httpd.conf | grep rewrite 但是问题依然存在。
标签: wordpress apache .htaccess mod-rewrite nginx