从 Wordpress URL 中删除 index.php

cnu*_*cnu 1 apache wordpress .htaccess mod-rewrite permalinks

我是 Wordpress 的新手,但尝试了所有文档和 Stack Overflow 帖子以寻求可能的解决方案,但到目前为止它们都没有奏效。

我已经验证 mod rewrite 已启用并按预期工作。遵循此处提到的所有步骤。https://wordpress.stackexchange.com/questions/105795/remove-index-php-from-permalinks

还重新启动了 Apache 几次,但当我从永久链接设置中删除 index.php 路径时仍然出现 404 错误。

将 wordpress 目录重命名为 blog 以访问位于 www.xyz.com/blog 的站点。现在的要求是访问任何带有 www.xyz.com/blog/2018/02/09/my-wp-post 且 URL 中没有 index.php 的博客文章。

除了用于博客站点的 WP 之外,我们没有任何其他 CMS 内容。

固定链接设置(自定义结构):/index.php/%year%/%monthnum%/%day%/%postname%/

.htaccess 文件内容:

BEGIN WordPress <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>

cnu*_*cnu 5

我花了大量时间尝试在这里或其他地方回答的许多不同方法,但没有一个解决了我的问题。

这就是我所做的,它解决了我的问题。

  1. 更改永久链接设置以删除 index.php
  2. 如果在 WP 管理面板中更改永久链接设置时不允许自动更新,请更新/保存位于 WP 安装根目录的 .htaccess 内容。
  3. 这是重要的一步,因为除了这里的wordpress 文档之外,没有多少问答详细提到这一点。具体检查 AllowOverride 设置并将其更改为 All,如果没有此更改,Apache httpd.conf 将不会加载 .htaccess 内容。当然,如果尚未启用 mod_rewrite,则必须在服务器中启用它。在我们的例子中,它默认是启用的,所以不必搞乱这一步。
  4. 还要确保启用了 WP 文档中提到的 FollowSymLinks 选项。
  5. 最后但并非最不重要的一点是,请确保重新启动 Apache 服务/服务器以使更改生效。

httpd.conf 文件中的条目:

<Directory "/var/www/html/blog">
Options FollowSymLinks
AllowOverride All
Run Code Online (Sandbox Code Playgroud)