.htaccess 301重定向子目录和其中的任何内容

.htaccess 301重定向子目录和其中的任何内容,.htaccess,.htaccess,我买了一个旧网站,显然使用了某种CMS,也许是wordpress。 现在它是一个简单的html站点。我想将www.example.com/main和该目录中的所有内容重定向到root。换句话说,如果url是example.com/main/a_bunch_of_垃圾,则应该301重定向到主页。这是我有的,但不太管用 Options +FollowSymLinks RewriteEngine on RedirectMatch 301 ^/main/(.*)$ http://www.example

我买了一个旧网站,显然使用了某种CMS,也许是wordpress。 现在它是一个简单的html站点。我想将www.example.com/main和该目录中的所有内容重定向到root。换句话说,如果url是example.com/main/a_bunch_of_垃圾,则应该301重定向到主页。这是我有的,但不太管用

Options +FollowSymLinks
RewriteEngine on 
RedirectMatch 301 ^/main/(.*)$ http://www.example.com
如果url不包含任何奇怪的字符,比如?或者=然后它就工作了。但例如,如果我访问www.example.com/main/index.php?option=com_content&view=post&id=84&Itemid=982/ 然后,虽然它确实重定向到主页,但在地址栏中,我仍然可以看到整个URL。我能修好这个吗?
我还记得我遇到的另一个问题。如果我把example.com/main(main后面没有正斜杠)放进去,重定向就不起作用了。仅当我将example.com/main/(带正斜杠)

放在这里时,它才起作用。您只需要使用
mod\u rewrite
规则,并避免在此处混用
RedirectMatch
。在根目录中具有类似的规则。htaccess:

Options +FollowSymLinks
RewriteEngine on

RewriteRule ^main(/.*)$ $1? [L,NC,R=301]
最后用于去除任何现有的查询字符串