高级301重定向到站点根目录的整个站点?

Day*_*124 5 .htaccess mod-rewrite joomla redirect

我正在努力解决一个古老的问题.我继承了一个网站,有一些相当不错的搜索引擎优化和一个明显的问题.整个站点托管在/ site /子目录中.我已经决定需要在根目录下加载站点.所以像http://example.org/site/index.php这样的东西将改为重定向到/index.php(< - 计为链接,如果不清楚我的意思是它是网站/索引的根.PHP).

我们在后端使用joomla,此时网站上有数百个页面.我一直在努力获得我所见过的任何重定向,以实现我希望他们做的事情.基本上,我们的顾客从旧的链接访问/ site /中的任何页面应该被重定向到完全相同的链接,但没有明星.

我只是从/ site /加载页面并使它看起来像是从root开放.我的理解是,这可以通过一些改进mod-rewrite(http://kb.mediatemple.net/questions/85/Using+.htaccess+rewrite+rules#gs?)来完成,但我还没有取得任何成功.我运行了一个beta网站,模仿我已经从/ site /转移到/的子域中的父网站,所以我可以测试很多.htaccess配置.

任何帮助表示赞赏...谢谢!

che*_*rbr 2

只是为了确定:您希望http://example.org/site/foo/bar/baz.php转到http://example.org/foo/bar/baz.php,即删除(通过重定向) /site 前缀(如果存在),但不要触摸 URL,否则,对吗?如果是这样,这取决于您使用的服务器:

  • 如果您的服务器是 Apache,您可以在以下位置使用类似的内容.htaccess

    RedirectMatch 301 ^/site/(.*)$ http://example.com/$1    
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果是 nginx,请将其添加到server {...}站点文件的会话中(通常在内部进行符号链接/etc/nginx/sites-enabled):

    location ~ ^/site/(.*)$ { rewrite ^/site/(.*)$ /$1 permanent; }
    
    Run Code Online (Sandbox Code Playgroud)

这里很好地解释了如何在两台服务器中设置这种基于模式的重定向。