【问题标题】:.htaccess redirect domain to subdirectory without changing URL.htaccess 将域重定向到子目录而不更改 URL
【发布时间】:2014-01-17 19:03:33
【问题描述】:

我有以下设置: -> domain1.com 是我的主域,也是文档根 -> domain2.com 是另一个注册为别名域的域(意味着它与 domain1.com 完全相同),我有多个这样的域。

当我现在想将该域重定向到某个东西时,我通常使用它来将该域重定向到其他东西(例如外部网站):

RewriteCond %{HTTP_HOST} ^(www\.)?domain2.com$ [NC]
RewriteRule ^(.*) http://somewiredisp.com/user/bla/$1 [L,R]

如果我为需要一个不错的论坛 url 或其他什么的人注册一个域,通常会使用此方法。像魅力一样工作 - 唯一的“问题”是浏览器中的地址栏发生变化,但我已经读过外部 URL 无法做到这一点,因为没有人抱怨过它我没问题。

但是,现在我想在地址栏中不更改 url 的情况下将一些 url 链接到子目录。

domain2.com -> domain1.com/subdir(或 domain2.com/subdir - 没关系,因为它是别名域)。

我目前的做法是

RewriteCond %{HTTP_HOST} ^(www\.)?domain2.com$ [NC]
RewriteRule ^(.*) http://domain1.com/subdir/ [P]

这不起作用(错误 404) - 如果我直接调用 domain1.com/subdir/ 如果明显有效。

我也尝试了几种变体

RewriteRule ^(.*) http://domain2.com/subdir/ [P]
RewriteRule ^(.*) /subdir/ [P]
RewriteRule ^(.*) http://domain1.com/subdir/index.html [P]

结果都一样。

也许这只是一个简单的错误,但我目前一无所知:/

【问题讨论】:

    标签: regex apache .htaccess redirect mod-rewrite


    【解决方案1】:

    你可以使用这条规则:

    RewriteCond %{HTTP_HOST} ^(www\.)?domain2\.com$ [NC]
    RewriteRule !^subdir/ /subdir%{REQUEST_URI} [L,NC]
    

    这将为domain2.com 的每个请求添加前缀/subdir(如果它不存在)。

    【讨论】:

    • 无论httphttps 都应该有效。确保https URL 也将进入相同的 htaccess
    • 只有在有斜线时才对我有用。例如 domain.com/demo/ 但没有斜杠 domain.com/demo,我得到了 domain.com/domain.com/demo/ 有什么想法吗?
    • 评论不是回答的好部分,但您可以在此规则之前保留尾部斜杠修复规则。
    • 如果它可以完美地工作/重定向,除了您不希望在地址栏中的 URL 中显示“subdir”文本吗?有什么办法吗?
    • 这条规则不做任何重定向,所以subdir在重写后不会显示在浏览器中。
    【解决方案2】:

    以下代码非常适合我。

    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^(www.)?example.com$
    RewriteCond %{REQUEST_URI} !^/folder_name/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /folder_name/$1
    RewriteCond %{HTTP_HOST} ^(www.)?example.com$
    RewriteRule ^(/)?$ folder_name/index.html [L]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      • 2015-12-01
      • 2015-06-22
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多