子域和url重写的htaccess配置

时间:2014-01-08 06:33:06

标签: php .htaccess url-rewriting subdomain

任何人都可以请我提供htaccess配置,以便我可以将我的文件夹视为子域名。

假设用户将尝试浏览http://folder.mydomain.com,用户实际上会看到http://mydomain.com/folder的内容。

此外,我希望浏览器中的网址显示http://folder.mydomain.com而非http://mydomain.com/folder

虽然我在互联网上找到了解决方案但无法使其正常工作。

提前致谢。

1 个答案:

答案 0 :(得分: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选项将重定向没有尾部斜杠的目录请求,这将暴露您的“文件夹”。

第二条规则具有相同的条件,只是它仅检查子域是否是存在的文件夹。然后它在内部将请求重写到该文件夹​​。