使用.htaccess文件获取子域名

时间:2014-07-29 15:08:52

标签: .htaccess

我在每个用户都有自己的子域的网站中工作。 我需要用户只能看到一些图像,具体取决于子域名。 例如: user1.domain.com应该在文件夹root / images / user1 /中获取图像 和 user2.domain.com应该在文件夹root / images / user2 /

中获取图像

我使用类似的东西:

# For security reasons, Option followsymlinks cannot be overridden.
#Options +FollowSymLinks -MultiViews
Options +SymLinksIfOwnerMatch -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^temp\.domain\.com$ [NC]
RewriteRule ^$ /logo-base.png [L]

RewriteCond %{DOCUMENT_ROOT}/access_temp_files/$1 -f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /access_temp_files/$1 [L]

RewriteCond %{DOCUMENT_ROOT}/access_temp_files/$1 !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /pic-base.png [L]

在这种情况下,当url是temp.domain.com/image.png时,它会在root / access_temp_files / image.png获取图像,如果不存在则在root /

处打印pic-base.png

所以我需要相同的东西,但我需要获得子域名 并在不同的地方使用它,例如替换" temp"和" access_temp_files",像这样:

# replacing "temp" with subdomain name in: RewriteCond %{HTTP_HOST} ^temp\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(subdomainname)\.domain\.com$ [NC]

# replacing "access_temp_files" with subdomain name in: RewriteCond %{DOCUMENT_ROOT}/access_temp_files/$1 -f
RewriteCond %{DOCUMENT_ROOT}/(subdomainname)/$1 -f

如何在.htaccess文件中获取子域名?

我希望理解起来并不太令人困惑:)

谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用以下规则:

# For security reasons, Option followsymlinks cannot be overridden.
#Options +FollowSymLinks -MultiViews
Options +SymLinksIfOwnerMatch -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^temp\.domain\.com$ [NC]
RewriteRule ^$ /logo-base.png [L]

RewriteCond %{HTTP_HOST} ^([^.]+)
RewriteCond %{DOCUMENT_ROOT}/%1/$1 -f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /%1/$1 [L]

RewriteCond %{HTTP_HOST} ^([^.]+)
RewriteCond %{DOCUMENT_ROOT}/%1/$1 !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /pic-base.png [L]

答案 1 :(得分:0)

我知道您正在询问如何使用.htaccess执行此操作,但我个人会使用virtual hosts创建该功能。这样,您可以为特定子域指定文档根目录。然后你可以在每个子域的文件夹中放一个单独的.htaccess,或者你可以将一个全局的.htaccess放在子域文件夹的父文件夹中。

<VirtualHost *:80>
DocumentRoot /root/images/user1/
ServerName user1.domain.com

# Other directives here

</VirtualHost>

<VirtualHost *:80>
DocumentRoot /root/images/user2/
ServerName user2.domain.com

# Other directives here

</VirtualHost>