根目录中的 Wordpress htaccess 覆盖子域中的 htaccess。子域应用程序现在无法运行

Posted

技术标签:

【中文标题】根目录中的 Wordpress htaccess 覆盖子域中的 htaccess。子域应用程序现在无法运行【英文标题】:Wordpress htaccess in root overriding htaccess in subdomain. Subdomain app not working now 【发布时间】:2011-02-09 07:35:05 【问题描述】:

我们在服务器的根目录中安装了 WP,它运行良好。但是,我们只是在子域中安装了另一个应用程序。现在,我可以查看该应用程序的 index.php,但无法对其执行任何操作。根中的 htaccess 规则(来自 WP 基本安装)正在影响请求。

那么,如何消除 WP htaccess 文件对子域的影响?

这是根目录的 htaccess 内容(WP 安装):

<IfModule mod_rewrite.c>
RewriteEngine On
# BEGIN WordPress
RewriteBase /
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]
# END WordPress
</IfModule>

对于子域中的htaccess:

RewriteEngine on
RewriteCond $1 !^(index\.php|css|stylesheets|js|images|user_guide|favicon\.ico|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

我在网上到处搜索并尝试了几个我找到的示例。没有任何效果。

非常感谢任何帮助! 谢谢

更新: 似乎 Wordpress 可能不是罪魁祸首。出于好奇,我删除了 WP .htaccess 文件中的所有行。并且子域中的应用程序仍然无法正常工作。它的重写规则一定是错误的..

因此,第二个重写规则不起作用。如果我输入 /index.php?about 然后我可以看到关于页面.. 但它应该通过转到:/about

来显示

【问题讨论】:

【参考方案1】:

WP 也是罪魁祸首(你有两个问题)。

我可以解决第一个 .htaccess 问题,因为 WP 是可预测的。您想将此放在 BEGIN WordPress 部分之前:

RewriteRule ^subdir-name/.*$ - [PT]

它会抓取对您的子目录的任何请求并通过 (PT) 传递它,这样它就不会被 WordPress 劫持。

您的第二个 .htaccess 中的问题是它似乎假设它仍在根目录中。对于这个,如果没有看到您的应用程序的布局,我无法确定,但是 index.php 之前的 / 很可能是错误的。您确定第二个文件中的路径与您的文件的新布局匹配吗?

【讨论】:

太好了..谢谢。在我看到你的答案之前(还没有测试过)我一直在尝试我在网上阅读的所有内容,这似乎适用于我需要正常工作的任何子目录:# stuff to let through (ignore) RewriteBase / RewriteCond % REQUEST_URI "/sub-dir1/" [OR] RewriteCond %REQUEST_URI "/sub=dir2/" RewriteRule (.*) $1 [L] 是的,您可以使用 RewriteConditions。虽然有些人有非常复杂的 .htaccess 文件(这可能是一件好事;它们比 PHP 处理一些人使用的东西更适合处理多种事情),如果你有很多不同的块,使用 RewriteConds 会更加繁琐处理的规则。 PT 是处理它的“正确”方法,但不是唯一方法。 再次感谢!无论如何要为这个答案加分 - 我要到 15 分才能投票!!!跛脚!【参考方案2】:

嗯...这应该工作吗?对于子目录“办公室” - 干杯:-)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^office/.*$ - [PT]
# BEGIN WordPress
RewriteBase /
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]
# END WordPress
</IfModule>

【讨论】:

以上是关于根目录中的 Wordpress htaccess 覆盖子域中的 htaccess。子域应用程序现在无法运行的主要内容,如果未能解决你的问题,请参考以下文章

子域“m”。与 WordPress 和。 htaccess(在 htaccess 中的重写规则冲突。)

.htaccess & WordPress:从 RewriteRule 中排除文件夹

让您的站点主页与WordPress安装目录不同设置相关及.htaccess文件创建

linux下的php网站放到Windows服务器IIS下导入 .htaccess文件伪静态规则转换 (wordpress)

WordPress 404 模板覆盖我的 .htaccess 设置以解决 404 错误?

apache_conf 从php执行保护wordpress上传目录。在uploads目录中添加新的.htaccess文件。