【问题标题】:WordPress Permalinks not found in subfolder在子文件夹中找不到 WordPress 永久链接
【发布时间】:2026-02-02 01:50:01
【问题描述】:

我在根文件夹和子文件夹中安装了 WordPress。我可以访问子域中 WordPress 站点的主页,但永久链接不起作用 - 错误 404。我试图重置永久链接,但没有帮助。我找不到任何.htaccess文件,所以我自己创建了一个并将它放在子文件夹目录中:

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

这里是子文件夹 WordPress 站点的链接: http://ninahortendesigns.com/projects/bigsargefitness/

我已将数据库选项设置为上述方向。

感谢您的帮助。

【问题讨论】:

  • 删除根网站.htaccess文件中的RewriteBase文件。另外,/projects/ 是否在驱动器的根目录中?还是更像/home/username/www/projects/
  • 我试图删除根 .htaccess 中的 RewriteBase 文件,但没有成功。我在根目录中有 WP 站点,然后项目位于根文件夹下(以及 wp-amin 文件夹等)。WP 站点的子文件夹位于项目文件夹 ninahortendesigns/projects/bigsargefitness

标签: wordpress .htaccess permalinks subdirectory


【解决方案1】:

你需要看几件事:

  1. .htaccess 根 WP 站点 (WP1) 中的文件并对其进行编辑,以便 WP1 不会捕获 URL 并生成 404 错误,我不确定该评论是否有帮助,我已使用 this 回答类似的问题。
  2. .htaccess 子 WP 站点 (WP2) 中的文件并将其重命名为“htaccess.old”,然后登录到您的 wp2/wp-admin,转到“设置->永久链接”检查 URL 结构是否符合要求(它通常不会更改),然后单击页面底部的“保存”。这将在子目录的上下文中重新生成您的 .htaccess 文件,并且当您访问像 this 这样的子页面时,您不应该收到 404 错误

这是第一个链接中的代码经过编辑,以便它可以与您的网站一起使用,但如果您有其他规则,您应该只在评论下方插入该行。

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]

# Include in the next line all folders to exclude
RewriteCond %{REQUEST_URI}  !(projects) [NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

如果你有自定义规则,只插入这些行

# Include in the next line all folders to exclude
RewriteCond %{REQUEST_URI}  !(projects) [NC]

假设您是一名设计师并正在上传您已构建的网站示例,您只需在下次将新网站上传到 wp1/projects/ 子目录时执行第 2 步

【讨论】:

  • 感谢您引导我走向正确的方向。我已按照您在根文件夹中的建议更新了 .htaccess 文件,并将子文件夹中的 .htaccess 文件命名为 .htaccess.old 我保存了永久链接,但仍然出现 404 not found 错误。我还检查了 wp-config 以确保 define('RELOCATE',true) 不存在。我使用 godaddy 作为主机。
  • 您为什么不将永久链接结构更改为“Plain”作为测试,看看 404 是否再次弹出。如果不是,那么我们可以假设问题是子文件夹中的 htaccess,如果是,那么错误可能仍然存在于根 htaccess 文件中。
  • 感谢您的回复。当我使用普通选项时,永久链接有效。这就是我的子文件夹 .htaccess 文件的样子: # BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !- d 重写规则。 /index.php [L] # END WordPress 你对我如何让它与帖子名称设置一起工作有什么建议吗?否则,plain 选项将完美地展示项目。十分感谢你的帮助。你拯救了我的一天。
  • @Nina 我很高兴看到它可以在普通环境中使用。你能重新启用你的旧设置,看看是否有什么不同吗?
  • 我尝试再次将其设置为帖子名称,但出现 404 错误。平原效果很好。
【解决方案2】:

原因

当您请求的资源或路径无法到达时,会出现错误 404。在这种情况下,可能是因为 URL 重写工作不正常,因此永久链接请求仍被定向到请求的路径(例如 /projects/bigsargefitness/your-category/your-post-name)而不是重写路径(即/projects/bigsargefitness/index.php)。

以下解决方案假设您使用的是 Debian/Ubuntu,否则原则应保持不变。

解决方案

  1. 首先,确保重写引擎已经安装:

    sudo a2enmod rewrite
    
  2. 然后,通过在文件/etc/apache2/sites-available/your-site.conf 中编辑/添加以下行来确保引擎允许用于子目录:

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

    这里的关键是确保该行显示AllowOverride All 而不是AllowOverride None

  3. 最后,重启你的服务器:

    sudo service apache2 restart
    

如果这有帮助,请告诉我。

【讨论】: