.htaccess htaccess将特定文件和文件夹重定向到新站点,并将其他内容重定向到新站点上的特定页面

.htaccess htaccess将特定文件和文件夹重定向到新站点,并将其他内容重定向到新站点上的特定页面,.htaccess,mod-rewrite,redirect,rewrite,.htaccess,Mod Rewrite,Redirect,Rewrite,我找不到任何人询问或回答我的具体情况 我正在将一个有大量静态产品和信息页面的旧电子商务网站移动到安装在新位置(根目录中的新文件夹)的新电子商务软件包中。 进入 我知道我可以将整个网站重定向到新位置,但这不会起作用,因为大部分新网站都是通过电子商务软件动态运行的,而且产品页面地址甚至与旧网站不太接近 我已经使用RedirectMatch为我知道需要重定向的所有产品页面创建了单独的重写,这很好。现在我需要任何我可能错过的页面重定向到新商店的主页,但我显然无法重定向我不知道的内容。这就是我的问题,我现

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

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

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


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

请注意,
RedirectMatch
是mod_别名,而不是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多条
重定向匹配
指令,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*的上述规则之前。因为这是一个“一网打尽”的规则,就像是最后的手段,所以需要在所有常规重定向之后执行。

请注意,
RedirectMatch
是mod_别名,而不是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多条
重定向匹配
指令,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*的上述规则之前。因为这是一个“一网打尽”的规则,就像是最后的手段,所以需要在您所有的常规重定向之后执行。

您能展示一下您所拥有的吗?这可能会使回答更容易抱歉,由于我的代表,我目前无法发布任何额外的链接:(@JonLin似乎在正确的轨道上。您可以将.htaccess文件编辑到问题中(如果仍然有必要)。您可以显示您拥有的内容吗?这可能会使回答更容易抱歉,由于我的代表,目前我无法发布任何额外的链接:(@JonLin似乎走对了方向。您可以将.htaccess文件编辑到问题中(如果仍然需要的话)如果我的理解是正确的,这将重定向任何未找到的页面-这很好-但我还需要任何其他我尚未重定向的页面。@如果你转到那些尚未重定向的页面,你会得到404吗?我不知道,因为我不知道哪些页面不存在…不。有些是静态页面,没有好的,就像旧网站一样,我们不担心保留,但我不知道可能会有什么。我可以完全删除旧网站的内容,但这不是我想要的-任何其他尚未重定向的页面,如果它们存在或不存在,都应该重定向到新主页。补充:我想这更适合于那些不存在的页面还没有重定向到自定义404页面。剩下的是:任何试图访问旧站点中仍然存在的任何页面的尝试都应该重定向到新主页,如果它还没有重定向到其他位置。我感谢您回答了这个问题,尽管它迫使我删除旧的存储以正确实现它-但是无论如何都会在某个时候完成。如果我的理解是正确的,这将重定向未找到的任何内容-这很好-但我还需要任何其他我尚未重定向的页面。@如果你转到那些尚未重定向的页面,你会得到404吗?我不知道,因为我不知道这些页面是什么没有…没有。有些是静态页面,看起来像旧网站,我们不担心保留,但我不知道可能会有什么。我可以完全删除旧网站的内容,但这不是我想要的-任何其他没有重定向的页面,如果它们存在或不存在,应该重定向到新主页。补充:我想这将是be更适合于尚未重定向的不存在的页面,请转到自定义404页面。剩下的是:任何试图访问旧站点中仍然存在的任何页面的尝试,如果该页面尚未重定向到其他位置,都应重定向到新主页。我相信您回答了这个问题,即使它迫使我删除旧存储为了正确地实现它-但无论如何,这最终会在某个时候完成。