将子域重定向到域,同时保留路径和查询字符串

时间:2019-02-27 22:32:39

标签: laravel .htaccess mod-rewrite url-redirection

我有一个子域,我想这样重定向到主域(使用.htaccess):

  1. https://abc.example.com我想将其重定向到https://www.example.com
  2. https://abc.example.com/path/page-namehttps://www.example.com/path/page-name
  3. https://abc.example.com/path/page-name?test=12&test1=12https://www.example.com/path/page-name?test=12&test1=12

请提出我的建议。

我已经尝试过以下解决方案,但无法正常工作。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$   [NC]
RewriteRule ^ http://www.example.com/suberror  [L,R]

我正在使用Laravel。

2 个答案:

答案 0 :(得分:1)

在此行:

RewriteRule ^ http://www.example.com/suberror  [L,R]

没有pattern表示,正则表达式已根据请求的URI进行了检查。

将其更改为此:

RewriteRule ^(.*)$ http://www.example.com/$1  [L,R]

这部分^(.*)$pattern,它将由substitution$1中呈现

如果可以,请将[L,R]更改为[L,R=301]进行永久重定向,因为单独R意味着R=302是临时的。

答案 1 :(得分:1)

假设:

  • 您有1个子域(如示例中所述)
  • 子域和主域指向文件系统上的同一区域(它们共享一个公共根)。

ID文件顶部尝试以下操作:

.htaccess

来自请求的URL路径保存在RewriteEngine On RewriteCond %{HTTP_HOST} ^abc\.example\.com [NC] RewriteRule ^ http://www.example.com%{REQUEST_URI} [R,L] 服务器变量中。来自请求的查询字符串将直接传递给替代(目标)。