Opencart 301重定向

时间:2014-10-01 16:23:04

标签: apache .htaccess mod-rewrite redirect opencart

在Opencart商店的.htaccess文件中出现重定向问题。

似乎任何带有/index.php?_route_=的网址都没有被重定向。

例如,这有效:

redirect /old-url-here http://example.com/new-url?

这不是:

redirect /index.php?_route_=some-url.asp http://example.com

有什么想法可以让它发挥作用?

2 个答案:

答案 0 :(得分:1)

使用mod_alias'Redirect指令无法匹配查询字符串。你需要使用mod_rewrite,如果你使用mod_rewrite,你可能会想要完全停止使用mod_alias。

尝试:

RewriteEngine On
RewriteCond %{QUERY_STRING} route=some-url\.asp
RewriteRule ^index\.php$ http://example.com/

答案 1 :(得分:0)

另一件事是 - 除了Jon的回答 - 像index.php?_route_=some-keyword之类的网址仅在内部使用/创建,并且仅在您启用了SEO的情况下。在这种情况下,您点击包含http://yourstore.com/some-keyword之类网址的链接,此网址会重写为index.php?_route_=some-keyword

因此,您不应该自己创建这样的URL,也不应该尝试从它们重定向。如果您需要重定向,请抓住第一个SEO网址以重定向它。

我们不知道您将更改放在.htaccess文件中的哪个位置,但是如果您仔细查看此重写规则

RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

不仅你会发现它是最后一条规则,而且它还有这个 L 开关,告诉Apache服务器如果匹配此规则,请执行URL重写(,附上查询字符串[QSA]和)停止匹配其他规则[L] - 这是最后

如果您只需要重定向特定网址,请按照与 sitemap.xml 的重定向相同的方式执行此操作(例如),然后将放在之前重写规则:

RewriteEngine On
RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
# ...
# your new rule here - while the URL in the link is http://yourstore.com/some-url.asp
RewriteRule ^some-url.aspx$ index.php?route=some-folder/some-controller [L]
# ...
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]