我一直在这个问题上工作了三天,并发表在几个论坛上,没有任何线索。
问题:
当用户键入SUBDOMAIN.domain.com我希望它保持在URL窗口中的方式。
这些文件的真实位置是domain.com/apps/SUBDOMAIN
我知道这是可能的使用.domain.com DNS Alogging(我已经完成)和.htaccess规则。
这是我现在的.htaccess规则
RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC] RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.domain\.com$ [NC] RewriteRule !^([a-z0-9-]+)($|/) /apps/%2%{REQUEST_URI} [PT,L]
好的,这几乎可以工作。
在subdomain.domain.com中input的内容是从domain.com/apps/subdomain中读取的
但有些事情是可怕的错误。
访问subdomain.domain.com/image.jpg(AKA domain.com/apps/subdomain)工作正常
访问subdomain.domain.com/anyfolder/image.jpg(AKA domain.com/apps/subdomain)会返回一个404
看着Cpanel错误日志显示这一点
[Thu Nov 18 20:48:50 2010] [error] [client ***.**.***.***] File does not exist: /home/domain/public_html/images, referer: http://subdomain.domain.com/apps/subdomain/
所以它似乎是正确的重写在第一个目录的基础上,但低于那个被发回到public_html根
所有的帮助和build议将不胜感激
谢谢,
蒂姆
PS。 我不得不删除正确的超链接格式,因为我是一个新用户。
纠正我,如果我错了,但你有重写规则:
RewriteRule !^([a-z0-9-]+)($|/) /apps/%2%{REQUEST_URI} [PT,L]
说:仅当^([a-z0-9-]+)($|/)不匹配时才重写。 当你的URLpath是/anyfolder/image.jpg ,上面的内容将匹配( ^anyfolder/ ),这样重写规则就不会运行,所以你基本上会继续到subdomain.domain.com/anyfolder/image.jpg 。
以下的SO问题也有类似的要求:
在他的回答中,glavić给出了应该起作用的回应,也给出了这个链接:
试试看,应该可以。
你可以编辑httpd.conf? 使用dynamic虚拟主机似乎更为直接。 看看http://httpd.apache.org/docs/2.2/vhosts/mass.html和http://httpd.apache.org/docs/2.2/mod/mod_vhost_alias.html