我最近协助将网站从纯粹的开发域迁移到了一个现场网站,在那里曾经有一个网站由另一个CMS系统处理而不是我们目前使用的网站。目前的系统是Joomla,但我不认为这对我的问题很重要。
因此,对于当前站点,URL将从标准Joomla格式重写,以删除index.php,并在地址中添加.html后缀,这意味着URL如下所示:
http://example.com/folder/page.html
在其他CMS系统处理的旧网站中,网址具有以下结构:
http://example.com/side.php?id=1
我们是一个社交组织,有许多网站链接到我们 - 还有很多我们甚至都不知道 - 所以我需要处理的问题是:我需要将所有这些死链接重定向到其他网站上,以便他们只是指向我们网站的根目录。
任何人都可以向我解释如何制作.htaccess重定向如下:
/side.php?id=*到example.com的根
在这种情况下,我的意思是*表示任何数字,因为当然有很多页面具有不同的ID。
如果他们指向www,对我来说没有任何意义。前缀与否。
在此先感谢您的帮助,我希望我之前没有问过一个已经回答的问题,但我对.htaccess的经验非常有限,并且已经搜索并尝试了不同的解决方案,但这并不适合我。
答案 0 :(得分:2)
在根文件夹的.htaccess中,添加以下内容:
RewriteEngine on
RewriteCond %{QUERY_STRING} id=\d+
RewriteRule ^side\.php$ http://%{SERVER_NAME}/ [R=301,L,QSD] #Remove the ",QSD" for Apache <2.4.0, or to keep the query string.
R = 301将告诉浏览器/搜索引擎该页面已被永久移动。
答案 1 :(得分:0)
这样的规则应该有效:
RewriteCond %{HTTP_HOST} .*
RewriteCond %{QUERY_STRING} id=\d+
RewriteRule ^side.php http://example.com [L,R=301]
这将在外部重定向,使用HTTP 301响应(永久移动)
答案 2 :(得分:0)
这里需要的是一些301 Moved Permanently响应,让浏览器和搜索引擎知道您正在将网页移动到新位置。我不会使用mod_rewrite将所有请求重定向到此side.php页面,而是分析旧网站的每个页面并确定所有内容的移动位置。有了这个,使用htaccess Rewrite directive通知浏览器正在移动的各个页面
Redirect 301 /side.php?id=123 /about_us.html
Redirect 301 /side.php?id=456 /contact_us.html
我推荐这种方法,因为它会将导航到过期页面的人重定向到与他们请求的旧页面具有相似内容的新页面,而不是将它们全部重定向到您的主页。