我在将Opencart中的seo友好URL从旧的http应用到新的https时遇到了问题。
在我们过去拥有像domain.com/productname这样的优秀网址之前,但上个月我们为我们的网站购买了ssl证书,现在所有网址都在其https版本上,因此这些产品页面已更改其格式,例如{ {3}}如果点击链接,它现在就像opencart中的http://domain.com/productname一样凌乱。
我只想删除这个index.php? route = url参数,以便所有链接都成为domain.com/productname。我也尝试过GWT来获取它不是重定向URL。我也检查了标题状态是200。
规范网址仍处于 http 而不是 https ,某些产品链接仍然指向 http ,而不是 https 。
到目前为止,我对页面没有任何问题,例如关于我们的联系 - 我们工作得很好。
以下是我的.htaccess:
RewriteEngine On
RewriteBase /
#RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
#RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteRule ^download/(.*) /index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
#This setting force logo url to it's home page
RewriteCond %{QUERY_STRING} ^route=common/home$
RewriteRule ^index\.php$ https://www.domain.com/? [R=301,L]
#This setting force http to https version
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.domain.com/$1 [R=301,L]
答案 0 :(得分:1)
您需要在路由规则之前保留重定向规则:
RewriteEngine On
RewriteBase /
#This setting force logo url to it's home page
RewriteCond %{QUERY_STRING} ^route=common/home$
RewriteRule ^index\.php$ https://www.domain.com/? [R=301,L,NE,NC]
#This setting force http to https version
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.domain.com/$1 [R=301,L,NE]
#RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
#RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteRule ^download/(.*) /index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
还要确保在新的浏览器中测试它以避免旧的浏览器缓存。
答案 1 :(得分:0)
另一个解决方案是让你网站的ssl部分也允许覆盖
cd / etc / apache2 / sites-available
nano yourdomain.com.conf
添加以下代码
<Directory "/var/www/html/yourdomain.com/public_html">
AllowOverride All
Require all granted
</Directory>
内
<VirtualHost *:443>
.....
</VirtualHost>