在Opencart商店的.htaccess
文件中出现重定向问题。
似乎任何带有/index.php?_route_=
的网址都没有被重定向。
例如,这有效:
redirect /old-url-here http://example.com/new-url?
这不是:
redirect /index.php?_route_=some-url.asp http://example.com
有什么想法可以让它发挥作用?
答案 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]