在子文件夹中找不到 WordPress 永久链接

WordPress Permalinks not found in subfolder

我在根文件夹和子文件夹中安装了 WordPress。我可以访问子域中 WordPress 站点的主页,但 permalinks 不起作用 – 错误 404。我尝试重置 permalinks,但没有帮助。我找不到任何.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 站点的 link: http://ninahortendesigns.com/projects/bigsargefitness/

我已经把数据库选项设置成上面的方向了

感谢您的帮助。

你需要看一些东西:

  1. .htaccess 根 WP 站点 (WP1) 中的文件并对其进行编辑,以便 WP1 不会捕获 URLs 并生成 404 错误,我不确定该评论是否有帮助,我'我用 this 回答了类似的问题。
  2. .htaccess 子 WP 站点 (WP2) 中的文件并将其重命名为 "htaccess.old" 然后登录到您的 wp2/wp-admin,转到 "Settings->Permalinks" 检查 URL 结构根据需要(通常不会更改)并单击页面底部的 "Save"。这将在子目录的上下文中重新生成您的 .htaccess 文件,并且当您访问 this
  3. 等子页面时,您不应该收到 404 错误

这是第一个 link 编辑的代码,因此它应该适用于您的网站,但如果您有其他规则,您应该只在评论下方插入该行。

# 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 步

原因

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

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

解决方案

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

    sudo a2enmod rewrite
    
  2. 然后,通过 editing/adding 文件 /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
    

如果有帮助请告诉我。