.htaccess 如何使用htaccess编写子域?
我正试图通过htaccess文档转发一个子域。以下说明将转发.htaccess 如何使用htaccess编写子域?,.htaccess,redirect,subdomain,wildcard-subdomain,.htaccess,Redirect,Subdomain,Wildcard Subdomain,我正试图通过htaccess文档转发一个子域。以下说明将转发http://sub.domain.com到内部结构Root>子文件夹>index.php。这一切都很好 # REWRITE DEFAULTS # ==================================================================================================== RewriteEngine On RewriteBase / # SUBDOMAIN F
http://sub.domain.com
到内部结构Root>子文件夹>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
这种方法只有一个(大)缺点。当您试图访问子文件夹中的文件夹时,如Root>subfolder>images
,请转到http://sub.domain.com/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使子域正常工作吗?这是因为
/subfolder/images
是一个真实目录,mod\u dir
模块通过301重定向向所有目录添加一个尾随斜杠
您可以这样使用它:
RewriteEngine On
# add a trailing slash if /subfolder/images is a directory
RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ [NC]
RewriteCond %{DOCUMENT_ROOT}/subfolder/$1/ -d
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L,NE,R=302]
RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/subfolder/
RewriteRule ^(.*)$ /subfolder/$1 [L]