无法访问非WordPress子目录,因为WordPress会用404错误覆盖它们

时间:2011-06-16 作者:Nicole

我指的是之前提出但未得到适当回答的问题:Wordpress overriding actual subdirectories还有Non "Wordpress" pages/code getting 404 error

我也有同样的问题,我在网上找到的几乎所有东西都试过了。这肯定与在wordpress中打开permalinks有关。然而,我已经把一个新的。子目录中的htaccess文件具有:

重写发动机关闭

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

我还尝试了其他一些建议的解决方案,如ErrorDocument 401“Unauthorized access”和ErrorDocument 404“Unauthorized access”和Direct 301/mysubdirectoryhttp://www.mydomain.com/mysubdirectory/index.html在不同的地方都没有用。

有人能提供另一种解决方案吗?我唯一能修复它的方法是关闭永久链接,但我们需要它们打开。

谢谢

妮可

8 个回复
SO网友:Elpie

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

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

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

重写引擎关闭-此操作正常工作。如果它不工作,请检查您是否未使用通配符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>
其中一个应该适合你。

SO网友:mike23

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

把这个放在.htaccess

ErrorDocument 401 default

SO网友:Patrick

如果您仍然在禁用htaccess的情况下获得404,并且您已经验证了路径,并且知道文件在那里,那么您只剩下这三个选项。。。

选项。。。

服务器很可能运行区分大小写的操作系统。这意味着,如果您键入的是路径,而没有使用精确的字符和大小写,那么它将无法工作如果这些都不起作用,那么您需要一个新主机。

SO网友:Kirsten Douglas

我看到这条线已经有几个月的历史了,但以防万一,你从来没有让它工作过!

我有一个类似的问题,但我的问题是wordpress安装位于子目录中,该子目录阻止URL访问根目录中的文件夹(在WP安装目录之外),但仅在启用永久链接时。为了解决这个问题,我复制了这两个索引。php和。htaccess(copy not move)从WP安装所在的子目录中删除,并将它们都放在根public\\u html(或您试图在WP安装目录之外访问的任何子目录)中。这个htaccess文件已经具有永久链接的重写条件:

RewriteEngine On
RewriteBase /subdirectoryinstallfolder/
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
启用永久链接进行刷新,解决了所有问题。请确保您对根文件夹的权限也设置正确,因为这在过去给我带来了问题。

SO网友:lizette

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

SO网友:NJENGAH

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

在WordPress安装的同一根目录上安装Codeigenter脚本后,我遇到了这个问题。

在尝试了这里列出的所有技巧之后,我仍然在与新脚本相关的页面上发现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”文件夹中,这样应该可以工作。

SO网友:Dan

我已经多次查看了这里的回答,因为我遇到了类似的问题。我有一个子目录中的文件,当我试图访问它们时会抛出404错误。所有的。正如克里斯滕·道格拉斯(KirstenDouglas)所说,htaccess的东西未能纠正它,Wordpress已经完成了这项工作。

我的解决方案我找到了article 检查服务器上的错误日志后。我收到一条关于脚本的uid错误的消息。我还注意到,抛出404并不是因为文件,而是因为服务器无法提供500。html文件,即我有一个500错误。

原来我是以root身份创建文件的,需要将所有权更改为webfiles所有者。

我希望这能帮助其他有同样问题的人!

SO网友:TheDeadMedic

您应该可以添加RewriteCond 指令,确保对子文件夹内的请求忽略WordPress规则。

RewriteCond %{REQUEST_URI} !^/mysubdirectory
# rest of WordPress rewrite rules
然而,你说即使没有WordPress.htaccess 您遇到了问题?你的子目录的内容是什么.htaccess?

结束

相关推荐

Creating custom login errors

我希望能够创建自定义登录错误。例如,如果用户未登录就访问了受限区域,那么我将重定向到wp-login.php?ref=access 我想输出Restricted area, please login to continue. 或者类似的东西。你知道怎么做吗。我发现有过滤器login_errors 但是我在出现的代码中找不到其他地方,除了登录页面本身。最后,我真的不想为了做到这一点而改变任何核心文件。我花费了大量的时间和精力来确保wordpress的核心完全没有受到影响,以便我可以升级它。有人有什么想法吗?