.ht访问特定文件的所有子域

问题描述 投票:0回答:1

我正在尝试将子域的所有流量重定向到子域中的一个特定文件。这就是我在 htaccess 文件中的内容。

RewriteCond %{HTTP_HOST} ^sub\.mydomain\.com$
RewriteRule ^/?$ "http\:\/\/sub.mydomain\.com\/filename\.php" [R=301,L]
apache .htaccess redirect dns subdomain
1个回答
0
投票

不确定您是否需要该条件(这取决于您的设置),但否则不会有什么坏处,所以让我们保留它。

这应该是您实际要求的工作变体:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub\.mydomain\.com$
RewriteCond ${REQUEST_URI} !^/filename\.php$
RewriteRule ^ /filename.php [R=301,L]

但是我怀疑这是否是您真正想要实现的目标。我怀疑您实际上想要内部重写,而不是外部重定向。所以类似这样的事情:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub\.mydomain\.com$
RewriteCond ${REQUEST_URI} !^/filename\.php$
RewriteRule ^ /filename.php [L]

这将使浏览器中的可见 URL 保持不变,但在内部重写对该 php 文件的所有请求。这对用户来说是不可见的。

或者您甚至想要两者的结合:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^sub\.mydomain\.com$
RewriteCond ${REQUEST_URI} !^/$
RewriteRule ^ / [R=301,L]

RewriteCond %{HTTP_HOST} ^sub\.mydomain\.com$
RewriteCond ${REQUEST_URI} !^/filename\.php$
RewriteRule ^ /filename.php [L]

一般来说,我更愿意在实际的http服务器的主机配置中实现这样的一般规则,所以在一个中心位置,而不是在分布式配置文件(“.htaccess”)中,但也许您正在使用廉价的托管提供商并且不这样做可以访问中央配置。

© www.soinside.com 2019 - 2024. All rights reserved.