.htaccess 仅用于主页重定向到子域(OpenCart)

Posted

技术标签:

【中文标题】.htaccess 仅用于主页重定向到子域(OpenCart)【英文标题】:.htaccess redirect to subdomain only for homepage (OpenCart) 【发布时间】:2015-05-12 12:52:27 【问题描述】:

我想从 mydomain.com 重定向到 shop.mydomain.com,但我也想让此重定向仅适用于主页。这是一个 Opencart 页面,所以所有页面都有类似于http://shop.mydomain.com/index.php?route=information/information&information_id=14 的 url,所以从我的角度来看,只为索引文件制定规则是不可行的。由于这个项目是一个代码意大利面条,并且有 OpenCart 页面和静态页面,我需要保持旧 URL(没有子域)处于工作状态。

查找了类似的主题,但它们都做完全相反的事情,从域重定向到子域或做同样的事情但使我的静态页面无用,所以我最终使用了一个非常糟糕的临时方法,如下所示。

 <meta http-equiv="refresh" content="0;URL='http://shop.example.com/index.php?route=information/information&information_id=15'" /> 

非常感谢您,我希望在您阅读并找到真正重复的内容之前,我不会得到大量重复的投票。

【问题讨论】:

您的.htaccess 文件中有什么内容? Options +FollowSymLinks RewriteEngine On RewriteCond %REQUEST_FILENAME !-d RewriteCond %REQUEST_FILENAME\.php -f RewriteRule ^(.*)$ $1.php http://shop.example.com/index.php?route=information/information&amp;information_id=14 是您的主页吗?您是要从该页面重定向还是确切地重定向到 http://example.com/ 我想从example.com重定向到shop.example.com/index.php?route=information/…‌​14。主页将是 opencart 主页。 【参考方案1】:

您可以在 /.htaccess 文件中使用它:

Options +FollowSymLinks

RewriteEngine On

# Redirect root to shop.example.com
RewriteRule ^/?$ http://shop.example.com/index.php?route=information/information&information_id=14 [R,L]

# Route to PHP files
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME\.php -f
RewriteRule ^(.*)$ $1.php

要使重定向永久化,请将[R,L] 更改为[R=301,L]

【讨论】:

它重定向到example.com/shop(安装了opencart)而不是shop.example.com/index.php?route=information/… :( 这不是规则所指示的,这意味着在某处触发了另一个重定向。或者可能是缓存问题。但是上面显示的规则将example.com 重定向到shop.example.com/index.php... /shop 目录中有.htaccess 文件吗?如果有,里面有什么? 不,该文件夹中没有 .htaccess。 我刚刚测试了重定向,它按预期工作。请尝试使用其他浏览器,或清除浏览器缓存并重试。

以上是关于.htaccess 仅用于主页重定向到子域(OpenCart)的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess - 将旧网站重定向到主域,但也将一些内容重定向到主域的子域

.htaccess:将主域重定向到https:// www,子域重定向到https://(不带www)

使用基于浏览器语言的 htaccess 从和到子域重定向

.htaccess 重定向到子域

htaccess中的子域重定向[关闭]

.htaccess 使用哈希重定向到子域 url