2014-10-01 214 views
0

在Opencart商店中的.htaccess文件中重定向時出現問題。Opencart 301重定向

似乎任何URL與/index.php?_route_=沒有得到重定向。

例如,這個工程:

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

這不:

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

任何想法或建議,以什麼可能得到這個工作?

回答

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/ 
0

的另一件事是 - 除了喬恩的答案 - 像index.php?_route_=some-keyword網址是/只創建內部,只有在情況下,你必須在SEO打開。在這種情況下,您點擊一個URL爲http://yourstore.com/some-keyword的鏈接,該URL將被重寫爲index.php?_route_=some-keyword

因此,您不應該自己創建類似的URL,也不要嘗試從它們重定向。如果您需要重定向,請抓住第一個SEO網址將其重定向。

我們不知道你在哪裏把你變成了.htaccess文件,但如果你在這個重寫規則仔細看

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

不僅你會發現它的存在最後的規則,但它也有這個交換機告訴Apache服務器,如果這個規則匹配,做一個URL重寫(附加查詢字符串[QSA]和)停止匹配其他規則[L] - 這是Last one。

如果您需要重定向只是一個特定的URL,這樣做同樣的方式重定向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]