.htaccess opencart redirect 301

时间:2011-04-08 01:48:27

标签: .htaccess redirect opencart

我只是将我的网站从asp迁移到opencart。在.htaccess中我想做一些重定向,以便我的客户可以使用旧的链接来访问

在.htaccess里面

redirect 301 /contact.asp http://www.example.com/index.php?route=information/contact_us
redirect 301 /downloads.asp http://www.example.com/downloads

对于完全正常工作的联系我们,对于下载网址,它无法正常工作。 当我访问http://www.example.com/downloads.asp时,它会重定向到http://www.example.com/downloads?_route_=downloads.asp 和Opencart显示它找不到页面。 对于http://www.example.com/downloads,我们在后端系统中设置了SEO友好URL。

我们可以使用

访问

http://www.example.com/information/downloads

http://www.example.com/downloads

但我们无法使用普通链接访问

http://www.example.com/index.php?route=information/downloads

以下是我的全部.htaccess

# Prevent Direct Access to files
<FilesMatch "\.(tpl|ini)">
Order deny,allow
Deny from all
</FilesMatch>

# SEO URL Settings
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

redirect 301 /contact.asp http://www.example.com/index.php?route=information/contact_us
redirect 301 /downloads.asp http://www.example.com/downloads

============另一项测试========================

我在本地主机上对此进行了一些测试我发现这是一个有趣的结果。但是,我的问题仍未解决。

我从http://localhost/examplehttp://example运行了.htaccess(添加了虚拟目录)

http://localhost/example

redirect 301 /example/downloads.asp http://localhost/example/downloads/

http://example

redirect 301 /downloads.asp http://example/downloads/

然后我尝试从localhost(http:// example)

重定向到我的实时版本链接
redirect 301 /downloads.asp http://www.example.com/downloads/

我访问http://example/downloads.asp

浏览器重定向到我

http://www.example.com/downloads?route=downloads.asp

NOTED

在LIVE版本中,我没有添加任何重定向代码 [非常可靠]

但在Live版本中,我将直接使用enter

进行访问

http://www.example.com/downloads

我不确定为什么从localhost重定向301到实时版本会出来

http://www.example.com/downloads?route=downloads.asp

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

发现解决方案: .htaccess重定向301使用opencart v1.5.4.1

...所需的其他代码(以及此修复的信用): https://github.com/opencart/opencart/pull/142 ...替换内容: - catalog / controller / common / seo_url.php - system / library / url.php

重定向罚款: RewriteRule contacto http:.... com / index.php?route = information / contact [R = 301,L]

重定向不起作用: 重定向301 contacto http:.... com / index.php?route = information / contact

验证

答案 1 :(得分:3)

把它放在路由器前面。在前面添加.asp和^之后的$。

# Prevent Direct Access to files
<FilesMatch "\.(tpl|ini)">
Order deny,allow
Deny from all
</FilesMatch>

# SEO URL Settings
RewriteEngine On

redirect 301 ^contact.asp$ http://www.example.com/index.php?route=information/contact_us
redirect 301 ^downloads.asp$ http://www.example.com/downloads

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

为什么不将联系人重定向到/information/contact_us而不是index.php?route=information/contact_us

答案 2 :(得分:0)

您可以在重定向网址的末尾尝试“?”,如果它不存在,就像第二个网址一样(它对我有用):

redirect 301 /contact.asp http://www.example.com/index.php?route=information/contact_us
redirect 301 /downloads.asp http://www.example.com/downloads?