【发布时间】:2016-08-17 17:19:24
【问题描述】:
我正在尝试通过 htaccess 文档转发子域。以下指令会将http://sub.domain.com 转发到内部结构Root > subfolder > index.php。这一切都很好。
# REWRITE DEFAULTS
# ====================================================================================================
RewriteEngine On
RewriteBase /
# SUBDOMAIN FORWARD
# ====================================================================================================
RewriteCond %{HTTP_HOST} ^sub.domain.com$
RewriteRule ^(/)?$ subfolder/index.php [L]
RewriteCond %{HTTP_HOST} ^sub.domain.com$
RewriteCond %{REQUEST_URI} !^/subfolder/
RewriteRule ^(.*)$ /subfolder/$1
这种方法只有一个(大)缺点。当您尝试通过转到http://sub.domain.com/images/ 来访问子文件夹中的文件夹(例如Root > subfolder > images)时,一切都会再次正常运行,然而当您不以斜杠结尾时http://sub.domain.com/images url地址栏中会变成http://sub.domain.com/subfolder/images/,这显然不是我想要的。
如果忘记了斜线,我会添加一个斜线怎么办?
RewriteCond %{HTTP_HOST} ^(.*).domain.com$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_FILENAME} !(.*)/$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ http://%1.domain.com/$1/ [L,R=301]
当你有一个普通的 URL (http://www.domain.com/images) 时,这一切都有效,因为它会检测到它是一个目录并添加一个斜杠,如果它是一个文件,它将省略斜杠。但是,这不适用于我们的 http://sub.domain.com/images 示例。
有人知道如何使用 htaccess 使子域正常工作吗?
【问题讨论】:
标签: .htaccess redirect subdomain wildcard-subdomain