我只是将我的网站从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/example和http://example运行了.htaccess(添加了虚拟目录)
redirect 301 /example/downloads.asp http://localhost/example/downloads/
和
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
有什么想法吗?
答案 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?