【问题标题】:htaccess configurations of subdomain and url-rewriting [duplicate]子域和url重写的htaccess配置[重复]
【发布时间】:2014-01-08 15:04:02
【问题描述】:
谁能给我提供 htaccess 配置,以便我可以将我的文件夹视为子域。
假设用户将尝试浏览http://folder.mydomain.com,而用户实际上看到了http://mydomain.com/folder 的内容。
另外,我希望浏览器中的 URL 显示 http://folder.mydomain.com 而不是 http://mydomain.com/folder。
虽然我在互联网上找到了解决方案,但无法使其发挥作用。
提前致谢。
【问题讨论】:
标签:
php
.htaccess
url-rewriting
subdomain
【解决方案1】:
试试:
RewriteEngine On
# to handle directory slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)
RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -d
RewriteRule ^(.+[^/])$ /$1/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)
RewriteCond %{DOCUMENT_ROOT}/%1 -d
RewriteRule ^(.*)$ /%1/$1 [L]
条件首先检查请求不是针对现有文件或目录,然后检查主机名不是以“www”开头,然后为子域创建分组(例如folder),然后在第一条规则中,它检查“文件夹”内的请求是一个目录,并且请求不以斜杠结尾。这将重定向请求以包含尾部斜杠。这是因为 mod_dir 和 DirectorySlash 选项将重定向对不带斜杠的目录的请求,这将暴露您的“文件夹”。
第二条规则具有相同的条件,只是它只检查子域是否是存在的文件夹。然后它在内部将请求重写到该文件夹。