我正在努力解决一个古老的问题。我继承了一个网站,它有一些非常好的 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,对吧?如果是这样,这取决于您使用的服务器:
.htaccess
中使用类似的东西。 :RedirectMatch 301 ^/site/(.*)$ http://example.com/$1
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/