多个域的{htaccess

时间:2015-12-13 18:20:25

标签: apache .htaccess mod-rewrite redirect

为了在仅托管多个域的托管上进行多域托管,我已经为主站点提供了以下.htaccess。这一切似乎都有效,除了一些奇怪的事情(下面指定)

我无法访问apache配置,因此我无法定义多个虚拟主机。

当前.htaccess:

Options +FollowSymLinks -Indexes -Multiviews
RewriteEngine on
RewriteBase /

# Finish rewriting for primary domain
RewriteCond %{HTTP_HOST} !^www\.kcore\.org [NC]
RewriteCond %{REQUEST_URI} !^/domains/ [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.kcore\.org [NC]
RewriteRule ^(.*)$ /domains/kcore.org/htdocs/%1/$1 [L]

# Finish rewriting on additional domains
RewriteCond %{HTTP_HOST} !^.*kcore.org$ [NC]
RewriteCond %{REQUEST_URI} ^/domains/ [NC]
RewriteRule ^(.*)$ - [L]

# Block access on kcore.org/domains
RewriteCond %{HTTP_HOST} ^.*kcore.org$ [NC]
RewriteCond %{REQUEST_URI} ^/domains/?$ [NC]
RewriteRule ^(.*)$ - [F,L]

# The actual host to directory translation

# sub.aliasdomain, not www
# ==> domains/HOSTNAME/htdocs/SUBDOMAIN/www
RewriteCond %{HTTP_HOST} !^.*kcore\.org [NC]
RewriteCond %{HTTP_HOST} !^www\..*$ [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.([^.]+\.[^.]+)$ [NC]
RewriteRule ^(.*)$ /domains/%2/htdocs/%1/$1 [L]

# www.aliasdomain
# ==> domains/HOSTNAME/htdocs/www/
RewriteCond %{HTTP_HOST} !^.*kcore\.org [NC]
RewriteCond %{HTTP_HOST} ^www\..*$ [NC]
RewriteCond %{HTTP_HOST} ^[^.]+\.([^.]+\.[^.]+)$ [NC]
RewriteRule ^(.*)$ /domains/%1/htdocs/$1 [L]

#  aliassed domain without subdomain
# ==> domains/HOSTNAME/htdocs/www/
RewriteCond %{HTTP_HOST} !^.*kcore\.org [NC]
RewriteCond %{HTTP_HOST} ^([^.]+\.[^.]+)$ [NC]
RewriteRule ^(.*)$ /domains/%1/htdocs/$1 [L]

我的目录结构:

├── domains
│   ├── deluyck be
│   │   └── htdocs
│   │       └── www
│   │           └── index.html
│   └── kcore org
│       └── htdocs
│           └── www
│               └── domains --> /domains (symlink)
└──             └── test.php

(链接的域名多于这两个域名)

DNS设置是所有子域的记录,除了www。,它是实际域名的CNAME(因此www.kcore org是kcore org的CNAME)

现在,我的问题

  • 有没有办法优化这个?似乎过度了;)

  • 由于某些不明原因,/ www似乎会附加到所有路径。我还在试图找出原因。

  • 将没有斜线的所有文件夹重定向到/ variant。

我使用以下代码,除了http://domain.org/gallery上托管的图库,其中包含一个Menalto图库。由于某些不明原因,此代码会重定向到domain.org/main.php(而不是转到domain.org/gallery/main.php)

# Add trailing slash to all requests
RewriteCond %{REQUEST_URI} !.*/$
RewriteCond %{REQUEST_URI} !\.[a-z0-9]+$ [NC]
RewriteRule ^(.*/)?www/(.*)$ $2/ [L]

我一直在寻找,但是我没有找到更好的解决方案。

谢谢!

0 个答案:

没有答案