2011-04-08 144 views
0

我们有一个我们正在尝试启动的Magento网站。我们有大量的URL重写,但是当我将其添加到.htaccess文件时,网站不会加载。Magento htaccess 301重定向

很显然,我做错了什么,这里是我使用的代码:

RewriteCond %{QUERY_STRING} ^StoreLevel=3&PrevStoreLevel=1&productid=6067&Level1=155&p=5&term=&BrowseBy=0$ 
RewriteRule ^store\.php$ http://oursite.com/zproduct.html? [R=301,L] 

任何意见是极大的赞赏。

+0

什么错误信息你好吗? – 2011-04-08 00:51:28

+0

嘿,是的,这可能会有帮助的信息,我得到:500内部服务器错误 – Jason 2011-04-08 00:57:39

+1

打开重写错误记录并发布你得到的输出。 'RewriteLog /var/log/httpd/rewrite.log RewriteLogLevel 9' – 2011-04-08 01:21:10

回答

0

是否启用了mod_rewrite?你可以让.htaccess文件多一点防弹一些条件语句,就像这样:

<IfModule mod_rewrite.c> 
    RewriteCond %{QUERY_STRING} ^StoreLevel=3&PrevStoreLevel=1&productid=6067&Level1=155&p=5&term=&BrowseBy=0$ 
    RewriteRule ^store\.php$ zproduct.html [R=301,L] 
</IfModule> 

另外请注意,你不需要把在完整的URL,如果您重定向停留在同一个域。

顺便说一下,如果你只是在做基本的字符串匹配,那么使用正则表达式没有意义。有一个page on the Apache wiki这给替代的简要概述,以使用正则表达式,你可能想是这样的:

RewriteCond %{QUERY_STRING} =StoreLevel=3&PrevStoreLevel=1&productid=6067&Level1=155&p=5&term=&BrowseBy=0 
+0

谢谢!这解决了我的问题,使用完整的URL似乎也导致了probs。现在关于更有效的格式化,我们有1000个,所以我们这样做是关键。这看起来适合你吗? 的RewriteCond%{QUERY_STRING} = Store.php?StoreLevel = 3&PrevStoreLevel = 1&的productid = 6067&级别1 = 155&P = 5&术语=&BrowseBy = 0 重写规则zproduct.html [R = 301,L] Jason 2011-04-08 16:07:32

+0

否,QUERY_STRING只包含匹配的查询字符串,所以你应该省略Store.php?来自RewriteCond。否则它对我来说很好。如果我的答案解决了您的问题,请接受它! ;) – ZoFreX 2011-04-09 01:59:44