.htaccess - 站点根目录下整个站点的高级 301 重定向?

标签 .htaccess mod-rewrite redirect joomla

我正在努力解决一个古老的问题。我继承了一个网站,它有一些非常好的 SEO 和一个明显的问题。整个站点托管在/site/子目录中。我决定我需要在根目录加载站点。所以像 http://example.org/site/index.php将改为重定向到/index.php(<-- 算作一个链接,如果不清楚我的意思是它是站点/index.php 的根。)

我们使用 joomla 作为后端,此时网站上有数百个页面。我一直在努力获得我所看到的任何重定向来做我想让他们做的事情。基本上,我们的顾客从带有/site/的旧链接访问的任何页面都应该重定向到完全相同的链接,但没有星号。

我愿意从/site/加载页面并使其看起来像是来自根目录。据我了解,这可以通过一些改进的 mod-rewrite (http://kb.mediatemple.net/questions/85/Using+.htaccess+rewrite+rules#gs ?) 来完成,但我还没有取得任何成功。我运行了一个测试版站点,它模仿了我已经从/site/移动到/的子域中的父站点,因此我可以测试很多 .htaccess 配置。

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

最佳答案

只是为了确定:你想要 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    
    
  • 如果是 nginx,把这个加到 server {...}您站点文件的 session (通常在 /etc/nginx/sites-enabled 内符号链接(symbolic link)):
    location ~ ^/site/(.*)$ { rewrite ^/site/(.*)$ /$1 permanent; }
    

  • Here is a good explanation关于如何在两个服务器中设置这种基于模式的重定向。

    关于.htaccess - 站点根目录下整个站点的高级 301 重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26491112/

    相关文章:

    php - 64 位 xampp windows 10 中带有 .htaccess 的搜索引擎友好 URL

    linux - 有人可以给我一个可以删除 www 的 .htaccess 示例吗?

    php - 使用 htaccess 强制重写 url 以提供 css 的绝对路径

    表单后的 PHP 重定向在 IE、Firefox 中不起作用

    c# - WebRequest - 防止重定向

    php - 使用 .htaccess 文件中的 mod_rewrite 更改 URL 文件夹层次结构

    .htaccess url-rewrite 如果文件不存在

    php - 如何使用 mod_rewrite 重写 url

    .htaccess - 如何重定向到 Laravel 上的公共(public)文件夹

    php - 如何拥有同名的文件和目录