-1

我最近协助将一个网站从一个纯开发域迁移到一个实时站点,在该站点上,曾经有一个由另一个 CMS 系统处理的站点,而不是我们目前使用的站点。当前系统是 Joomla,但我认为这对我的问题并不重要。

因此,对于当前站点,URL 是从标准 Joomla 格式重写的,以去除 index.php 并在地址中添加 .html 后缀,这意味着 URL 看起来像这样:

http://example.com/folder/page.html

在由另一个 CMS 系统处理的旧站点中,URL 具有以下结构:

http://example.com/side.php?id=1

我们是一个社会组织,有许多网站链接到我们——还有很多我们甚至不知道的——所以我需要处理的问题是:我需要重定向其他网站上的所有这些死链接,以便他们简单地得到指向我们网站的根目录。

任何人都可以向我解释如何进行 .htaccess 重定向,如下所示:

/side.php?id=* 到 example.com 的根目录

在这种情况下,我的意思是 * 表示任何数字,因为自然有很多具有不同 ID 的页面。

如果他们指向 www,对我来说没有任何意义。前缀与否。

提前感谢您的帮助,我希望我之前没有问过一个已经回答过的问题,但是我对 .htaccess 的经验非常有限,并且搜索并尝试了不同的解决方案并没有为我做这件事。

4

3 回答 3

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 将告诉浏览器/搜索引擎该页面已被永久移动。

于 2012-06-08T07:37:09.743 回答
0

像这样的规则应该有效:

RewriteCond %{HTTP_HOST} .*
RewriteCond %{QUERY_STRING} id=\d+
RewriteRule ^side.php http://example.com [L,R=301]

这将在外部重定向,并带有 HTTP 301 响应(永久移动)

于 2012-06-08T07:35:38.087 回答
0

您需要的是一些301 Moved Permanently响应,让浏览器和搜索引擎知道您正在将页面移动到新位置。我不会使用 mod_rewrite 将所有请求重定向到此 side.php 页面,而是分析您旧网站的每个页面并确定所有内容已移动到何处。有了这个,使用 htaccess重写指令通知浏览器个别页面正在移动

Redirect 301 /side.php?id=123 /about_us.html
Redirect 301 /side.php?id=456 /contact_us.html

我推荐这种方法,因为它将那些导航到过时页面的人重定向到与他们请求的旧页面具有相似内容的新页面,而不是仅仅将他们全部重定向到您的主页。

于 2012-06-08T07:41:58.137 回答