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
Php 在Magento URL前面加上位置前缀(htaccess/URL重写)_Php_.htaccess_Magento_Url Rewriting_Url Routing - Fatal编程技术网

Php 在Magento URL前面加上位置前缀(htaccess/URL重写)

Php 在Magento URL前面加上位置前缀(htaccess/URL重写),php,.htaccess,magento,url-rewriting,url-routing,Php,.htaccess,Magento,Url Rewriting,Url Routing,所以我在WordPress安装的后面安装了一个Magento安装;因此: root.level/是WordPress root.level/shop/是Magento 除目录外,网站的所有内容都通过WordPress处理。Magento只处理目录 该网站将完全本地化,面向英国、欧洲其他地区和美国市场。在WordPress上,我使用qTranslate插件有效地实现了这一点,因此以下所有功能都可以正常工作: root.level/uk/ root.level/eu/ root.level/u

所以我在WordPress安装的后面安装了一个Magento安装;因此:

  • root.level/是WordPress
  • root.level/shop/是Magento
除目录外,网站的所有内容都通过WordPress处理。Magento只处理目录

该网站将完全本地化,面向英国、欧洲其他地区和美国市场。在WordPress上,我使用qTranslate插件有效地实现了这一点,因此以下所有功能都可以正常工作:

  • root.level/uk/
  • root.level/eu/
  • root.level/us/
在Magento中,我创建了3个店面,并使用我设法使其显示为:

  • root.level/shop/uk/
  • root.level/shop/eu/
  • root.level/shop/us/
但是,为了保持一致性,我更希望第一个URL段始终表示位置。因此,我已将以下内容写入根目录(WordPress安装)htaccess:

#shop moves
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^([a-z][a-z])/shop/(.*)[/]{0,1}$ /shop/index.php?___store=$1 [L]
RewriteRule ^([a-z][a-z])/shop[/]{0,1}$ /shop/index.php?___store=$1 [L]
</IfModule>
#店铺搬家
重新启动发动机
重写基/
重写规则^([a-z][a-z])/shop/(.*)[/]{0,1}$/shop/index.php?uuuuuuuuu store=$1[L]
重写规则^([a-z][a-z])/shop[/]{0,1}$/shop/index.php?\uuuuuuuu store=$1[L]
其中root.level/uk/shop/将加载uk magento店面主页,root.level/uk/shop/xyz.html具有所需的行为。问题是store页面上的链接仍然指向root.level/shop/xyz.html。如何让链接反映重写的URL

我尝试进入Magento Admin-->System-->Config,将作用域设置为相关的店面,然后在Web下更改“链接URL”(在安全和不安全两种情况下),这样可以更正该店面上的每个404页(包括主页)上的链接。是否有地方需要编辑Magento的URL读取行为

编辑:
所以这很奇怪。我已经让它在/eu/shop/和/us/shop/上运行,但是/uk/shop/仍然返回404s。我认为这是因为英国设定了违约,但这种改变似乎不会影响事情。有什么想法吗?

您可以使用此
.htaccess
使其工作:

<IfModule mod_rewrite.c>

  RewriteEngine On
  RewriteBase /

  # Redirect old /shop/uk/ to new /uk/shop
  RewriteCond %{THE_REQUEST} ^/shop/([a-z]{2})(.*)$ [NC]
  RewriteRule ^ %1/shop/%2 [R=302,L]

  # Load the right file for new /uk/shop
  RewriteRule ^([a-z]{2})/shop/(.*)/?$ /shop/index.php?___store=$1 [L]
  RewriteRule ^([a-z]{2})/shop/?$      /shop/index.php?___store=$1 [L]

</IfModule>

重新启动发动机
重写基/
#将旧的/shop/uk/重定向到新的/uk/shop
重写cond%{THE_REQUEST}^/shop/([a-z]{2})(.*$[NC]
重写规则^%1/商店/%2[R=302,L]
#为new/uk/shop加载正确的文件
重写规则^([a-z]{2})/shop/(.*)/?$/shop/index.php?uuuuuuu store=$1[L]
重写规则^([a-z]{2})/shop/?$/shop/index.php?\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

谢谢您的回复!不幸的是,它的结果与上面的完全相同——链接URL设置为默认值,所有商店链接仍然是/shop/uk/;链接URL设置为root.level/uk/shop/I get 404s.OK,这很奇怪/eu/shop/和/us/shop/两者现在都起作用/uk/shop/(默认值)不。。。