Apache重定向具有/不具有URL替换的特殊情况

时间:2014-10-13 13:50:01

标签: apache .htaccess redirect

关于项目:客户可以预订/预订其内容的子域名... 因此,如果您预订子域选项,则您的内容将显示在sub.example.com上,如果您未预订此选项,则内容会显示在example.com/sub上,内容会定期显示。我正在尝试使用以下重定向机制来实现此目的。

  1. 有人访问sub.example.com
  2. 浏览器显示example.com/sub
  3. 的内容
  4. 地址栏仍显示sub.example.com
  5. 使用位于sub.example.com

    下的.htaccess实现
    RewriteEngine on
    RewriteCond %{REQUEST_URI} / [NC]
    RewriteRule ^(.*)$ http://example.com/sub [P]
    
  6. example.com/sub或sub.example.com上的所有链接都是绝对链接,因此如果我点击sub.example.com上的主徽标,我会被重定向到example.com并且浏览器栏会发生变化。如果我点击sub.example.com上显示的文章,它包含一个示例/例子的href,所以我到达example.com/article就好了。

    我的问题是这些:

    1. .htaccess好吗?
    2. 由于内容重复,有任何问题吗? example.com/sub和sub.example.com从搜索机器的角度来看是一样的。我怎样才能管理重复的内容问题?
    3. 这种做法一般是否聪明?如果没有,我怎么能达到我的要求?

1 个答案:

答案 0 :(得分:1)

  1. 他们都在同一台服务器上吗?当目标不在同一服务器上时,通常使用P标志。否则,只需重写您的页面(见下文)。地址栏保持不变,但内容将被重定向。
  2. 可以通过向重写的页面添加元标记(规范)来解决重复内容 => https://support.google.com/webmasters/answer/139066?hl=en
  3. 如果他们在同一台服务器上:不!
  4. 示例代码:

    RewriteEngine on
    RewriteCond %{REQUEST_URI} !/sub [NC]
    RewriteCond %{HTTP_HOST} ^sub\.example\.com [NC]
    RewriteRule ^(.*)$ /sub/$1 [QSA,L]