问题描述

我提到以前提到的这个问题,没有适当回答:WordPress overriding actual subdirectoriesNon “WordPress” pages/code getting 404 error

我有同样的问题,我已经尝试了几乎在网上发现的一切。这绝对有关于在 wordpress 中打开固定链接。但是,我已经在子目录中添加了一个新的.htaccess 文件:

重写引擎关闭

问题依然存在。即使我完全删除了 wordpress .htaccess 文件,问题仍然存在。

我也尝试过一些其他建议的解决方案,例如在不同位置的 ErrorDocument 401 “Unauthorized access” 和 ErrorDocument 404 “Unauthorized access” 和 Redirect 301 / mysubdirectory http://www.mydomain.com/mysubdirectory/index.html 都无效。

有人可以提供另一种解决方案吗?我可以解决这个问题的唯一方法是关闭永久链接,但是我们需要它们。

谢谢,

妮可

最佳解决方案

我假设您将 WordPress 放在您的站点根目录中,外部目录也位于您的站点根目录中。原因在于.htaccess 文件遵循层次结构。无论 top-level .htaccess 文件中的指令何处下载并应用于其下的所有目录。

如果是这样,你可以做几件事情之一:

  1. 将您的 WordPress 移动到自己的目录。请参阅:http://codex.wordpress.org/Moving_WordPress 如果您将 WordPress 移动到其自己的目录中,使其与服务器目录层次结构中的其他目录位于同一级别,WordPress 重写规则将不会影响其他目录。

  2. RewriteEngine Off – 这通常会工作。如果不工作,请确认您没有使用通配符 DNS 设置。如果您的 DNS 设置中有通配符*主机名记录指向您的 Web 服务器,可能会导致.htaccess 和子域的破坏。

  3. 在您的站点根目录中的.htaccess 文件中,添加以下的 WordPress .htaccess 指令:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} ^/subdirectoryname1/(.*)$ [OR]
    RewriteCond %{REQUEST_URI} ^/subdirectoryname2/(.*)$ [OR]
    RewriteRule ^.*$ - [L]
    </IfModule>
    

其中一个应该适合你。

次佳解决方案

这对我来说有一个类似的情况:

将其放在.htaccess 的顶部

ErrorDocument 401 default

第三种解决方案

当我将我的文件复制到同一个服务器但使用不同的子目录文件夹,所以当我试图访问我的页面,index.php 工作正常,但其他页面不是,并给我一个 404 错误。对不起,我的英语不好!!

我只是看看我的 htaccess 原来的:


# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

并把新的


# BEGIN WordPress

RewriteEngine On
RewriteBase /subdirectoryfolder
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /subdirectoryfolder/index.php [L]

# END WordPress

第四种方案

我看到这个线程是几个月大,但是为了防止你永远不会工作!

我有一个类似的问题,但是我的问题是 wordpress 安装位于子目录中,阻止了 URL 访问根目录中的文件夹 (WP 安装目录外),但只有当启用了固定链接时。为了解决这个问题,我从 WP 安装所在的子目录中复制了 index.php 和.htaccess(复制不移动),并将它们放在根 public_html(或者您尝试在 WP 安装之外访问的任何子目录) 目录) 。 .htaccess 文件已经有固定链接的重写条件:

RewriteEngine On
RewriteBase /subdirectoryinstallfolder/
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

启用固定链接刷新,并解决所有问题。确保您的根文件夹的权限设置正确,因为这使我过去的问题。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。