2013-01-07 46 views
1

我无法找到任何人询问或回答我的特定情况。htaccess将特定文件和文件夹重定向到新站点,并将其他任何内容重定向到新站点上的特定页面

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

我知道我可以将整个网站重定向到新的位置,但因为许多新网站从电子商务软件动态运行和产品页面的地址,甚至没有接近,将无法正常工作旧的。

我已经使用RedirectMatch为所有我知道需要重定向的产品页面创建单独的重写,因此很好。现在我需要任何我可能错过的页面重定向到新商店的主页,但我显然无法重定向我不知道的东西。所以这是我的问题,现在如何让我的遗留页面重定向到主页而不会破坏我已有的200个RedirectMatch规则?

+0

你能证明你有什么吗?这可能会使回答更容易 –

+0

对不起,由于我的代表到目前为止我不能发布任何额外的链接:(@JonLin似乎是在正确的轨道上,但 –

+0

你可以编辑.htaccess文件到问题(如果它仍然是必要的。) –

回答

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/文件夹。

但就像我说的,你有一些东西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 *。因为这是一个“万无一失”的规则,就像是最后的手段,它需要在所有常规重定向之后。

+0

如果我的理解是正确的,那会重定向找不到的东西 - 这很好 - 但我还需要其他任何我还没有重定向的页面。 –

+0

@LorenMcDonald如果你转到那些其他页面你还没有重定向,你有没有404? –

+0

我不知道,因为我不知道什么页面不存在...不。有些是静态页面,看起来像旧网站,我们不是担心保持,但我不知道可能会有什么,我可以完全删除旧网站的内容,但这不是我想要的 - 任何其他网页,如果它们存在或没有重定向,应该被重定向到新家页。 –

相关问题