为了在仅托管多个域的托管上进行多域托管,我已经为主站点提供了以下.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]
我一直在寻找,但是我没有找到更好的解决方案。
谢谢!