【问题标题】:Redirect domain.com/shop to www.domain.com/shop将 domain.com/shop 重定向到 www.domain.com/shop
【发布时间】:2016-07-14 19:30:08
【问题描述】:

注意:在将其标记为重复之前,请阅读完整的问题。 我已经应用了对我不起作用的波纹管建议。

1 - mod rewrite from .domain to www.domain htaccess

2 - .htaccess redirect from http://www.domain/ to https://domain.com

3 - .htaccess redirect any domain/directory to www.domain/directory

我们有一个购物网站,我们将其托管在主机 (CloudLogin) 上。 主站点基于 Joomla CMS 和 Magento 作为购物车。

主站点 URL 是 www.domain.com,购物车 URL 是 domain.com/shop(没有 www)。

我们需要用 (www) 显示两个 URL。

所以我们需要 Magento 文件夹,即 domain.com/shop 也位于 www URL。

我找到了一些关于堆栈溢出的解决方案,但它们对我不起作用,因为它总是显示消息浏览器(重定向过多或 /page 未正确重定向)

注意:.htaccess 文件位于 (shop) 文件夹中。

到目前为止,我尝试了以下方法:

1 -

# anything.com to www.anything.com
RewriteCond %{HTTP_HOST} ^[^.]+(\.[^.]+)?$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301,NE] 

上面的代码从 URL 中删除了 (shop) 目录,这变成了错误。

例如:domain.com/shop/cat1/prod1 变成 www.domain.com/cat1/prod1

2 -

RewriteCond %{REQUEST_URI} !^/shop/?.*$
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

上面的代码甚至没有应用 www 。

3 -

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

以上代码从 domain.com/shop/cat1/prod1 重定向到 www.domain.com/shop 并显示错误消息(重定向您的次数过多。) 页面上似乎是无限循环。

4 -

RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteRule ^(.*) http://www.domain.com/shop/$1 [L,R=301] 

这与 3 的作用相同。

5 -

#RewriteCond ${HTTP_HOST} doamin.com [OR]
#RewriteCond ${HTTP_HOST} www.doamin.com
#RewriteRule ^(.*)$ http://www.doamin.com/shop/$1 [QSA,R=301,L]

有谁知道我如何始终强制正确使用特定 URL 的 .htaccess?

我环顾四周,但找不到合适的答案。

【问题讨论】:

  • 这是我用的RewriteCond %{HTTP_HOST} !^www\.domain\.de$ RewriteRule ^(.*)$ http://www.domain.de/$1 [R=301,L]

标签: php apache .htaccess magento redirect


【解决方案1】:

试试:

RewriteEngine on

RewriteCond %{REQUEST_URI} !^/shop
RewriteCond www.%{HTTP_HOST} ^(?:www\.)?(www\..+)$ [NC]
RewriteRule ^ http://%1/shop%{REQUEST_URI} [NE,L,R]

【讨论】:

  • 它没有重定向到 www :(
  • 如果重要的话,也尝试使用 (http) 而不是 (https)。
  • @ZafarS 这对我来说很好,如果我输入 example.com/foo 它会被重定向到 example.com/shop/foo 没有任何问题。可能是我误解了你的要求吗?
【解决方案2】:

您是否尝试过以下操作?

# anything.com to www.anything.com
RewriteCond %{HTTP_HOST} ^[^.]+(\.[^.]+)?$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/shop/$1 [L,R=301,NE]

由于请求源自/shop 目录,它们不会在请求的 URL 中包含该目录。

【讨论】:

  • 实际上它包含,因为在管理仪表板中将 URL 设置为 (/shop) 并且由于某种原因我无法更改它。
猜你喜欢
  • 2017-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 2013-02-16
相关资源
最近更新 更多