我正在尝试重定向看起来像这样的旧网址: mysite.com/index.php?dispatch=products.view&product_id=30176 新的URL是SEO友好的,看起来像 - mysite.com/category/product
我正在使用带有SEO插件的CS-Cart 4.3.1,当我导入所有产品和类别时,URL会自动更改。
此附加组件在admin中具有301重定向功能,这使我能够手动创建301重定向。但是,有些东西是错误的,它不适用于具有“index.php”的重定向?在一条开始的道路上。
我尝试重定向没有“index.php”的旧网址?在路径中 - 如: “dispatch = products.view& product_id = 30176”到“mysite.com/category/product”并且它正常工作,页面正在被重定向。但这不是Google索引的正确网址,需要重定向。
我怀疑这个问题出现在htaccess文件的重写条件或重写规则中,这是由系统在激活SEO附加组件时创建的。
这就是它的样子:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
Options -MultiViews
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} ^api/(.*)$ [or]
RewriteCond %{REQUEST_URI} .*/api/(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*api/(.*)$ api.php?_d=$1 [L,QSA]
RewriteCond %{REQUEST_URI} \.(png|gif|ico|swf|jpe?g|js|css|ttf|svg|eot|woff|yml|xml)$ [or]
RewriteCond %{REQUEST_URI} store_closed.html$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*?)\/(.*)$ $2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L,QSA]
</IfModule>
如果有任何人在“index.php?”时能想到重定向不起作用的原因?包含在路径中,我将非常感谢您的帮助。
答案 0 :(得分:1)
内置的“301重定向”功能不支持非seo友好URL作为旧URL参数。这意味着您不能使用“index.php?dispatch = products.view&amp; product_id = 30176”,但您可以使用“old_website_category / old_website_product”一个。
要实现您的需求,请在.htaccess文件中添加301重定向。 E.g。
RewriteCond %{QUERY_STRING} ^product_id=30176$
RewriteRule ^/?index\.php$ http://example.com/category/product? [L,R=301]