我指的是以前问过但未适当回答的问题:
Wordpress覆盖了实际的子目录

非“ Wordpress”页面/代码出现404错误

我有同样的问题,我已经尝试了几乎所有在网上发现的内容。这肯定与在wordpress中启用永久链接有关。
但是,我在子目录中放了一个新的.htaccess文件,该文件是:

RewriteEngine off

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

我还尝试了一些其他建议的解决方案,例如
ErrorDocument 401“未经授权的访问”

错误文档404“未经授权的访问”

在各个位置重定向301 / mysubdirectory http://www.mydomain.com/mysubdirectory/index.html
都无效。
/>
有人可以提供其他解决方案吗?
我唯一可以解决的方法是关闭永久链接,但我们需要将其打开。

,谢谢,

妮可

>

评论

如果将WordPress根文件夹中的index.php重命名为index.bak会发生什么?目录仍然无法访问吗?

您是否尝试过在子文件夹.htaccess中重新定义基本URL(使用此子文件夹获取值)?

#1 楼

我假设您将WordPress放在站点根目录中,而外部目录也位于站点根目录中。发生这种情况的原因是.htaccess文件遵循层次结构。顶级.htaccess文件中的所有指令均会向下传输并应用于其下的所有目录。

如果是这种情况,则可以执行以下操作之一:


将WordPress移到其自己的目录中。
请参阅:http://codex.wordpress.org/Moving_WordPress
如果将WordPress移到其自己的目录中,以便它在服务器目录层次结构中与其他目录处于同一级别,则WordPress重写规则不会影响其他目录。
关闭RewriteEngine-通常可以正常运行。如果不起作用,请检查您是否未使用通配符DNS设置。如果您的通配符*主机名记录在DNS设置中指向您的Web服务器,则可能会导致.htaccess和子域损坏。

在网站根目录的.htaccess文件中,添加以下内容WordPress .htaccess指令:

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



其中一个应该为您工作。

#2 楼

过去,在类似情况下,这对我有用:

将其放在.htaccess顶部
ErrorDocument 401 default


评论


谢谢!我已经尝试了很多事情,但这是适用于我的情况的唯一解决方案:受密码保护的子目录

–拉多
2013年3月6日23:27



也为我工作,关于它做什么以及为什么起作用的任何解释?

– Asaf
13年8月10日在8:27

这对我有效..不是使用wordpress而是使用OpenCart并遇到相同的问题。一个解释真的很有帮助。

–billynoah
2014年8月28日在19:09

#3 楼

当我将文件复制到同一服务器上但具有不同的子目录文件夹时,因此当我尝试访问我的页面时,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


评论


嗨@lizette。欢迎来到WPSE论坛。您可能想在这里查看格式化的工作方式。

–波西·卡利穆图(Pothi Kalimuthu)
2012年9月21日,下午2:59

请注意不要更改永久链接结构,因为当您执行此操作时,WP会覆盖#BEGIN WordPpress和#END WordPress之间的任何内容

– clayRay
20-10-13在3:53

#4 楼

我发现这个线程已有几个月的历史了,但以防万一您无法正常工作!

我遇到了类似的问题,但是我的问题是wordpress安装位于子目录中,这阻止了对根目录(WP安装目录之外)中的文件夹的URL访问,但仅当启用永久链接时。为了解决这个问题,我从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]


启用永久链接进行刷新,它解决了所有问题。确保也正确设置了对根文件夹的权限,因为这过去曾导致我遇到问题。

#5 楼

如果仍然在禁用htaccess的情况下获得404,并且已经验证了路径并且知道文件在那里,那么剩下的唯一选择就是这三个...

选项...


服务器很有可能正在运行区分大小写的操作系统。这意味着,如果您输入的是路径,并且未使用确切的字符和大小写,则根本无法使用。
权限:您可能对文件或文件夹或父文件夹具有错误的权限。尝试将文件,文件夹和父文件夹的权限更改为755。如果您具有ssh(终端)访问权限,那么请转到根目录并运行此“ chmod -R 755 mydir”,这将递归设置所有权限。
如果仍然存在问题,然后您就遇到了服务器配置问题(可能是Apache)。您需要与您的托管服务提供商商谈。

如果这些都不起作用,那么您需要一个新的托管人。

#6 楼

在几乎编辑了htaccess的头发后,我终于找到了一个适用于WordPress的解决方案。

在与WordPress相同的根目录上安装了codeiginter脚本后,出现了这个问题。

尝试了此处列出的所有技巧之后,与新脚本关联的页面上仍然出现404错误。

我注意到WordPress htaccess覆盖了脚本的htaccess。我还注意到,同一目录中的其他WordPress安装没有此404错误。

我只是在同一服务器目录中从新WordPress安装中采用了htaccess,并将其添加到脚本所在的文件夹中。外观如下:

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


用目录名称替换子目录名称,并将此htaccess文件放在脚本所在的文件夹中。

示例:如果站点安装在此处

public_html/

,并且新文件夹位于

`public_html/example`


复制上面的htaccess并将其保存在文件夹“ example”中,这应该可以工作。

#7 楼

由于遇到类似问题,我已经多次查看了这里的响应。我在子目录中有文件,当我尝试访问它们时会抛出404错误。正如Kirsten Douglas所说,所有.htaccess内容都无法纠正,Wordpress已经完成了。
我的解决方案
我在检查服务器上的error_log后发现了这篇文章。我收到有关脚本错误uid的消息。我还注意到404并不是因为文件而被抛出,而是因为服务器无法提供500.html文件,即我出现了500错误。
结果我是以root用户身份创建文件的,并且需要将所有权更改为网络文件所有者。
希望对其他遇到相同问题的人有所帮助!

#8 楼

您应该能够仅添加一个RewriteCond指令,以确保子文件夹中的请求将忽略WordPress规则。

RewriteCond %{REQUEST_URI} !^/mysubdirectory
# rest of WordPress rewrite rules


但是,即使没有WordPress .htaccess您遇到问题了吗?您的子目录.htaccess的内容是什么?