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

时间:2017-01-05 21:23:42

标签: wordpress .htaccess permalinks subdirectory

我在根文件夹和子文件夹中安装了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/

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您需要查看以下几点:

    根据WP网站(WP1)中的
  1. .htaccess文件进行编辑,以便WP1不会抓取网址并生成404错误,我不确定该评论是否有帮助,我是使用this回答类似的问题。
  2. 子网站(WP2)中的
  3. .htaccess文件,并将其重命名为&#34; htaccess.old&#34;然后登录到你的wp2 / wp-admin,转到&#34;设置 - &gt;永久链接&#34;检查URL结构是否符合要求(通常不会更改),然后单击&#34;保存&#34;在页面的底部。这将在子目录的上下文中重新生成.htaccess文件,当您访问this等子页面时,您不应该出现404错误
  4. 以下是编辑的第一个链接中的代码,以便它可以与您的网站一起使用,但如果您有其他规则,则只应在评论下插入该行。

    # 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 / sub-directory时,您只需执行第2步< / p>

答案 1 :(得分:1)

原因

当您请求的资源或路径无法访问时,会出现错误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
    
  4. 如果有帮助,请告诉我。