我在每个用户都有自己的子域的网站中工作。 我需要用户只能看到一些图像,具体取决于子域名。 例如: 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文件中获取子域名?
我希望理解起来并不太令人困惑:)
谢谢。
答案 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>