【问题标题】:htaccess redirect specific files and folders to new a site AND anything else to a specific page on the new sitehtaccess 将特定文件和文件夹重定向到新站点,并将其他任何内容重定向到新站点上的特定页面
【发布时间】:2013-01-07 22:03:59
【问题描述】:

我找不到任何人询问或回答我的具体情况。

我正在将一个包含大量静态产品和信息页面的旧电子商务网站移动到安装在新位置的新电子商务软件包(进入根目录中的新文件夹)。 http://domain.com 转为http://domain.com/newstore

我知道我可以将整个站点重定向到新位置,但这不起作用,因为大部分新站点都是通过电子商务软件动态运行的,而且产品页面地址甚至与旧站点都不接近。

我已经使用 RedirectMatch 为我知道需要重定向的所有产品页面创建了单独的重写,这很好。现在我需要我可能错过的任何页面来重定向到新商店的主页,但我显然无法重定向我不知道的内容。所以这是我的问题,我现在如何在不破坏我已有的 200 条 RedirectMatch 规则的情况下将任何剩余的页面重定向到主页?

【问题讨论】:

  • 你能展示你有什么吗?这可能会使回答更容易
  • 抱歉,由于我的代表到目前为止我无法发布任何额外的链接 :(@JonLin 似乎在正确的轨道上。
  • 您可以将 .htaccess 文件编辑到问题中(如果仍然需要的话。)

标签: .htaccess mod-rewrite redirect rewrite


【解决方案1】:

请注意,RedirectMatch 是 mod_alias,而不是 mod_rewrite。当两个模块的指令应用于相同的 URI 时,这两个模块并不总是能很好地相互配合。不知道您的网站是如何设置的,无法回答您的问题,但您可以使用 *mod_rewrite* 尝试类似的操作:

RewriteEngine On
# Check that the request isn't for an existing resource
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Check that the request isn't for the new store
RewriteCond %{REQUEST_URI} !^/newstore
# redirect to the new store
RewriteRule ^ /newstore/ [L,R]

这里的原因是,如果请求不是针对现有页面、图像、脚本,则可能会导致 404,并且如果请求不是针对 /newstore 中的动态站点文件夹,然后我们将其重定向到/newstore/ 文件夹。

但就像我说的,你有 200 个 RedirectMatch 指令,而 mod_alias 并不总是与 mod_rewrite 配合得很好。您可能需要将它们全部转换为重写规则,但这可能没有必要。示例:

RedirectMatch 301 ^/old-path/old-page.html$ /newstore/?page=123

将转化为:

RewriteRule ^/old-path/old-page.html$ /newstore/?page=123 [L,QSA,R=301]

所有这些重写规则**必须在上述将所有 404 重定向到 /newstore* 的规则之前之前。因为这是一个“包罗万象”的规则,就像最后的手段一样,它需要在你所有的常规重定向之后。

【讨论】:

  • 如果我的理解是正确的,那将重定向任何未找到的内容 - 这很好 - 但我还需要我尚未重定向的任何其他页面。
  • @LorenMcDonald 如果您转到尚未重定向的其他页面,您会得到 404 吗?
  • 我不知道,因为我不知道哪些页面不存在...不。有些是看起来像旧网站的静态页面,我们不担心保留,但我不知道那里可能有什么。我可以完全删除旧网站内容,但这不是我想要的 - 任何其他尚未重定向的页面(如果存在或不存在)都应该重定向到新主页。
  • 补充一点:我想它更适合尚未重定向到自定义 404 页面的不存在页面。剩下的:任何访问旧站点中仍然存在的页面的尝试都应该重定向到新的主页,如果它还没有重定向到其他地方。
  • 我感谢您回答了这个问题,尽管它迫使我移除旧商店以便正确实施它 - 但无论如何最终都会完成。
猜你喜欢
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多