RwriteRule 从 www.domain.net/sub 到 sub.domain.net

RwriteRule 从 www.domain.net/sub 到 sub.domain.net

我如何创建一个重写规则来重写浏览器的 URL,使得对 的请求www.domain.net/sub始终显示为sub.domain.net

不需要重定向页面。

答案1

如果我理解正确的话,你想要的是:

  • 客户端在浏览器中输入www.domain.net/sub
  • 浏览器地址栏中的文本更改为 sub.domain.net
  • 显示的内容仍然相同

如果是这样,你必须有重定向。这是在地址栏中进行更改的方法。您不能直接在别人的电脑上编辑浏览器地址栏。

因此,您要做的第一件事就是按照 LogicWreck 的说明进行重定向。然后,在 httpd.conf 或 .htaccess 文件中添加 VirtualHost 条目,其中包含类似以下内容的内容

<VirtualHost *:80>
     DocumentRoot /path/to/webfiles/sub
     ServerName sub.domain.net
</VirtualHost>

可能还有一些指令;看看httpd.apache.org 您还可以添加另一个重写规则来查找正确目录下的文件,但一般来说,普通的 VirtualHOst 会更好。

如果您想使用重写规则而不是VirtualHost,您可以执行以下操作:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(sub.domain.net)$
RewriteRule /(.*) /path/to/webfiles/sub/$1

但我推荐 VirtualHost 路线;这是执行此类操作的正常方式。

答案2

您只需在 www.domain.net/sub 的 /sub 目录中创建一个 .htaccess,内容如下:

RewriteEngine on
RewriteRule ^(.*)$ http://sub.domain.net/$1 [R=301]

答案3

@Jenny D 是正确的,在开始之前你需要一个虚拟主机应答sub.domain.net,并且浏览器需要重定向——没有其他方法可以更改浏览器地址栏中显示的内容。

但是,您需要的重定向不需要mod_rewrite。请访问“何时不使用重写“wiki 页面,你会发现更轻松、更简单的方法:

Redirect sub/ http://sub.domain.net/

相关内容