htaccess将root重定向到子目录但允许root中的index.php运行

时间:2013-12-13 02:45:29

标签: php wordpress apache .htaccess joomla

这是我们的情况:原始域名(例如,www.example.com)在WordPress中完成并安装在根目录中。我们使用Joomla创建了一个新网站,并将其放在子目录中(例如,www.example.com/PORTALsite)。

我已经能够使用htaccess中的代码成功地将根目录(www.example.com/)重定向到此子目录(www.example.com/PORTALsite):

RewriteEngine on
RewriteRule ^$ http://www.example.com/PORTALsite [R=301,L]

这很好用,除了我们需要原始的WordPress网站(位于www.example.com/index.php的主页)才能运行。我们需要这个,因为我们在这个WordPress网站中有数百个页面在搜索引擎中编入索引,我们希望所有旧内容继续运行。

上面的代码适用于Root中的所有文件和子目录,允许我们的旧内容继续运行,并且它正确地将根本身(www.example.com/)重定向到新的Joomla网站的子目录(www.example.com/PORTALsite)。

然而,问题在于:我们仍然需要旧的WordPress网站的index.php文件才能直接访问(即如果有人在www.example.com/index.php中输入),但它不是运行。如果您访问www.example.com/index.php,也会重定向到www.example.com/PORTALsite。虽然根目录中的所有其他文件仍然可以按照我们的要求运行。

让我确保我正确解释这一点:如果有人访问我们的域名(www.example.com),它会根据我们的需要重定向到新的Joomla网站(www.example.com/PORTALsite)。但是,如果您访问www.example.com/index.php(旧的WordPress网站的主页),它还会重定向到新的Joomla网站的子目录(www.example.com/PORTALsite)。我们不希望这种情况发生。我们想要它,以便如果直接访问root的index.php文件,它仍将起作用(保持所有旧的WordPress内容完整)。

我们只希望请求域名本身www.example.com重定向到www.example.com/PORTALsite。但是,我们需要所有其他文件和子目录(包括www.example.com/index.php)仍然可以运行(这样人们仍然可以访问所有旧的WordPress网站的内容,以及许多静态页面)

根目录(www.example.com/)中的所有文件和子目录仍然可以正常运行,但只是旧的WordPress网站的主页(位于www.example.com/index.php)也重定向访问www.example.com/PORTALsite上的新网站(以及域名本身www.example.com的请求)。所以上面的代码非常接近我们想要的工作。

我非常感谢StackOverflow的专业知识,非常感谢我们可以获得的任何帮助。提前谢谢!

更新:这是我们的HTACCESS文件中的代码:(使用“example.com”而不是真正的域名)

RewriteEngine on
RewriteRule ^$ http://www.example.com/PORTALsite [R=301,L]

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

# END WordPress

根据下面的anubhava响应,一旦我让WordPress停止从URL中删除“index.php”,他的代码就应该工作了。谢谢anubhava!这是整个文件。

1 个答案:

答案 0 :(得分:2)

替换此规则:

RewriteRule ^$ http://www.example.com/PORTALsite [R=301,L]

用这个:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+[\s?]
RewriteRule ^$ /PORTALsite [R=301,L]
  • 确保这是你的wordpress .htaccess
  • 中的第一条规则
  • 确保在其他浏览器中进行测试以避免301缓存问题
  • 更改WP的固定链接设置,使您的BLOG /主页网址为http://domain.com/index.php而不是http://domain.com/