htaccess将root重定向到子目录,但允许root中的index.php运行
这就是我们的情况:原始域名(比如www.example.com)是在WordPress中完成的,并安装在根目录中。我们使用Joomla创建了一个新网站,并将其放在一个子目录中(比如www.example.com/PORTALsite) 我已经能够使用htaccess中的以下代码成功地将根目录(www.example.com/)重定向到此子目录(www.example.com/PORTALsite):htaccess将root重定向到子目录,但允许root中的index.php运行,php,wordpress,apache,.htaccess,joomla,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.examp
RewriteEngine on
RewriteRule ^$ http://www.example.com/PORTALsite [R=301,L]
这很好,除了我们需要原始的WordPress网站(位于www.example.com/index.php的主页)才能正常工作。我们需要这样做,因为我们在这个WordPress站点中有数百个页面,这些页面在搜索引擎中被编入索引,我们希望所有这些旧内容继续发挥作用
上面的代码适用于根目录中的所有文件和子目录,允许我们的旧内容继续工作,并且它正确地将根目录本身(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”而不是真正的域名)
重新编写引擎打开
重写规则^$http://www.example.com/PORTALsite [R=301,L]
#开始WordPress
重新启动发动机
重写基/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
#结束WordPress
根据下面anubhava的回答,一旦我让WordPress停止从URL中删除“index.php”,他的代码应该可以工作。谢谢你,阿努巴瓦!这是整个文件。替换此规则:
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的永久链接设置,使您的博客/主页URL成为
而不是http://domain.com/index.php
http://domain.com/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+[\s?]
RewriteRule ^$ /PORTALsite [R=301,L]