【问题标题】:htaccess to redirect to folder, ignoring subdomainhtaccess 重定向到文件夹,忽略子域
【发布时间】:2018-05-19 02:15:31
【问题描述】:

我无法创建 .htaccess 规则来执行此操作 域名是ico。[任何域名] 文件都是图标文件(.ico、.gif、.png、.svg)[这里没有其他服务,永远]。
我需要从基于根域的文件夹中提供图标(永久重定向),即:
https://ico.example0.com/favicon.icohttps://ico.example0.com/www.example0.com/favicon.ico
https://ico.example1.com/apple-touch-icon.pnghttps://ico.example1.com/www.example1.com/apple-touch-icon.png
https://ico.example2.com/favicon.gifhttps://ico.example0.com/www.example2.com/favicon.gif

这样可以吗?
谢谢!
-布赖恩

【问题讨论】:

  • 我不清楚您要做什么。您要提供的文件在哪里?我的意思是文件所在的主机上的目录结构是什么。使用 .htaccess 进行重定向非常简单,但是您所要求的假设是一个奇怪的目录结构。也许不吧。但请展示你正在尝试做的事情。
  • 目录结构是:ico.[anydomain.tld/www.[anydomain,tld]/favicon.ico 它是一种用于图标文件的通用 CDN。谢谢!

标签: .htaccess redirect


【解决方案1】:

是的,你可以这样做。

您需要为 %DOCUMENT_ROOT% 中的每个域创建目录(为此,我创建了 www.google.comwww.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 模拟了请求并且它可以工作(参数 --header Host: 告诉 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>

脸书也一样:

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>

干杯!

【讨论】:

  • RewriteRule ^/?(.*) %{DOCUMENT_ROOT}/%{HTTP_HOST}/$1 [L] 抛出“500”错误。
猜你喜欢
  • 1970-01-01
  • 2012-11-23
  • 2013-11-08
  • 1970-01-01
  • 2011-10-14
  • 1970-01-01
  • 2014-03-17
  • 2013-01-20
  • 1970-01-01
相关资源
最近更新 更多