两个.htaccess文件。一个在root目录中,另一个在wordpress中

时间:2014-05-30 22:09:19

标签: wordpress .htaccess mod-rewrite

我遇到.htaccess文件的问题(我不太懂的东西) - 因此,如果我能得到一个解释以及一个难以置信的答案!

无论如何,情况如下。

目标:我正在尝试删除我网站的www部分,以便它始终以XXX.com的形式加载。

我有一个根目录,其中.htaccess编码如下:

 <IfModule mod_rewrite.c>
 RewriteCond %{HTTPS} !=on
 RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
 RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
 </IfModule>

这很适合它的目的。但是,在名为&#34; Info&#34;的目录中我安装了Wordpress,它自己的.htaccess目前看起来像:

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

这不会删除www并且是标准的WordPress安装.htaccess文件。我的问题是,我该怎么做这个文件或根目录文件来修复规范问题!

非常感谢,

Alex

2 个答案:

答案 0 :(得分:0)

首先在子文件夹中重写htaccess文件中的重写规则。这意味着/info/文件夹中的htaccess文件完全取代了父目录中的任何规则。这就是为什么忽略根目录中的规则。

如果您使用的是apache 2.4,则可以使用InheritBefore选项:

RewriteOption InheritBefore

使得父目录中的任何规则都可以在当前目录中的任何规则之前应用。

如果你没有使用apache 2.4,那么你必须复制之前的规则:

 <IfModule mod_rewrite.c>
 RewriteCond %{HTTPS} !=on
 RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
 RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
 </IfModule> 

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

答案 1 :(得分:-1)

我自己解决了这个问题。在WP中,这很容易做到。

我登录了wp-login.php,然后进入常规设置,删除了&#34; www。&#34;来自两个列出的网址...工作了一个魅力!