Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php My.htaccess重定向正在重定向到错误的URL_Php_.htaccess_Magento - Fatal编程技术网

Php My.htaccess重定向正在重定向到错误的URL

Php My.htaccess重定向正在重定向到错误的URL,php,.htaccess,magento,Php,.htaccess,Magento,我最近把wordpress网站转换成了magento网站。现在我希望所有被搜索引擎索引的旧URL重定向到来自magento的新URL。 因为它只有大约150种产品,我想我应该手动操作 这是我为所有产品所做的尝试: Redirect 301 /products-page/accu/unibat-ctz5s-bs/ http://www.domain.nl/accu-s/unibat-ctz5s-bs.html 它确实尝试重定向,但最终指向以下URL:,这将给出一个404:( 有人能帮我吗?听起来

我最近把wordpress网站转换成了magento网站。现在我希望所有被搜索引擎索引的旧URL重定向到来自magento的新URL。 因为它只有大约150种产品,我想我应该手动操作

这是我为所有产品所做的尝试:

Redirect 301 /products-page/accu/unibat-ctz5s-bs/ http://www.domain.nl/accu-s/unibat-ctz5s-bs.html
它确实尝试重定向,但最终指向以下URL:,这将给出一个404:(


有人能帮我吗?

听起来htaccess末尾的mod_重写规则与mod_别名指令(重定向语句)有冲突。在这种情况下,您需要执行重定向,然后跳出URL/文件映射管道,因为mod_rewrite和mod_alias都可以在管道中执行它们的操作,所以它们都会损坏URI。只需使用mod_rewrite,将所有语句更改为:

RewriteRule ^/?products-page/accu/unibat-ctz5s-bs/$ http://www.domain.nl/accu-s/unibat-ctz5s-bs.html [L,R=301]
这些规则需要优先于任何其他规则。但请记住,
重定向
语句的工作方式与使用
重写规则
重定向的方式不同。
重写
将两个URI路径节点“链接”在一起。例如:

Redirect 301 /foo http://www.domain.nl/bar
/foo
/bar
链接在一起,因此对
/foo/blah/blah.html
的请求将重定向到
http://www.domain.nl/bar/blah/blah.html
。要将此功能转换为重写规则,您需要:

RewriteRule ^/?foo(.*)$ http://www.domain.nl/bar$1 [L,R=301]

这是你的.htaccess文件中唯一的一行代码吗?这是域.nl上唯一的.htaccess文件吗?嗨,不,在.htaccess文件中有很多行。它是一个标准的magento.htaccess文件,有大约150行这样的重定向。嗨,谢谢你的回答!当我使用重写规则时,它可以工作。只在一个产品上。其余的是直到重定向到错误的url:(@DavidEricsson)您必须将所有
Redirect
语句更改为等效的
RewriteRule
。关键是mod_alias和mod_rewrite没有很好地相互配合,所以在重叠的路径中根本不能使用mod_alias。谢谢Jon Lin!你是我的英雄!