【问题标题】:Redirect Subdomain to domain while preserving the path and query string将子域重定向到域,同时保留路径和查询字符串
【发布时间】:2019-02-28 13:08:31
【问题描述】:

我有一个子域,我想重定向到主域(使用.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。

【问题讨论】:

  • 你说你有“一个子域”(单数),但你的正则表达式中有一个通配符(任何子域)模式?相对于主域,子域在文件系统上指向哪里?同一个地方?

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


【解决方案1】:

在这一行:

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

没有pattern 表示,正则表达式检查请求的URI。

改成这样:

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

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

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

【讨论】:

    【解决方案2】:

    假设:

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

    .htaccess 文件的顶部尝试类似以下内容:

    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} ^abc\.example\.com [NC]
    RewriteRule ^ http://www.example.com%{REQUEST_URI}  [R,L]
    

    来自请求的 URL 路径保存在 REQUEST_URI 服务器变量中。请求中的查询字符串无需任何额外工作即可传递给替换(目标)。

    【讨论】:

      猜你喜欢
      • 2017-08-11
      • 2020-03-17
      • 1970-01-01
      • 2012-06-08
      • 2013-09-26
      • 2018-12-21
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      相关资源
      最近更新 更多