我无法创建.htaccess规则来执行此操作
域名是ico。[任何域名]
文件都是图标文件(.ico,.gif,.png,.svg)[此处没有任何其他服务]。
而且我需要根据根域从文件夹中提供图标(永久重定向),即:
https://ico.example0.com/favicon.ico至https://ico.example0.com/www.example0.com/favicon.ico
https://ico.example1.com/apple-touch-icon.png至https://ico.example1.com/www.example1.com/apple-touch-icon.png
https://ico.example2.com/favicon.gif至https://ico.example0.com/www.example2.com/favicon.gif
这可以吗?
谢谢!
-Brian
答案 0 :(得分:0)
您需要为%DOCUMENT_ROOT%中的每个域创建目录(为此我创建了 www.google.com 和 www.facebook.com :
root@alberta:/var/www/html# ls -ltr
total 32
-rw-r--r-- 1 www-data www-data 10701 Apr 16 11:01 index.html
drwxr-xr-x 15 www-data www-data 12288 Apr 16 14:52 mantis
drwxr-xr-x 2 www-data www-data 4096 May 18 15:02 www.google.com
drwxr-xr-x 2 www-data www-data 4096 May 18 15:04 www.facebook.com
添加规则以使用%HTTP_HOST%(请求来自的域)作为基础重定向。我在我的默认虚拟主机/etc/apache2/sites-available/000-default.conf中添加了规则:
RewriteEngine on
RewriteRule ^/?(.*) %{DOCUMENT_ROOT}/%{HTTP_HOST}/$1 [L]
这导致了这种配置:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteRule ^/?(.*) %{DOCUMENT_ROOT}/%{HTTP_HOST}/$1 [L]
Include conf-available/serve-cgi-bin.conf
</VirtualHost>
我已经使用CURL模拟了请求并且它正常工作(参数 - 标题主机:告诉apache我是哪个域):
root@alberta:/etc/apache2/sites-available# curl --verbose --header 'Host: www.google.com' 'localhost'
答案是我的www.google.com目录中的文档html:
< HTTP/1.1 200 OK
...
<p>ok google.com</p>
与facebook相同:
root@alberta:/etc/apache2/sites-available# curl --verbose --header 'Host: www.facebook.com' 'localhost'
答案是我的www.facebook.com文件夹中的文件:
< HTTP/1.1 200 OK
...
<p>my facebook.com</p>
干杯!