我如何创建一个重写规则来重写浏览器的 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/