我有两个关于将子域指向目录的问题:
目前我运行本地,但我可以在我设置的假域(带有hosts文件)上运行我的网站,它名为mysite.com。我怎么能(通过服务器设置?)这样做所有子域名将指向/?示例anders.mysite.com也应该显示mysite.com和asdassdd.mysite.com。
也许1.没有必要,但我如何通过htaccess将anders.mysite.com指向mysite.com/anders?重要提示是不应重定向。
为什么我想到1.是因为我不想在htaccess或任何apache / domain设置中指定任何地方,子域是什么,因为这将是动态的(由我的webapplication中的登录用户创建)
目前,用户可以使用mysite.com/anders/这是他们创建的URI,而不是真正的目录。在Kohana bootstrap中,我抓取URI并显示相关的用户页面。
我正在使用Kohana MVC框架并在我的htaccess中使用它:
# Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /
# Protect hidden files from being viewed
<Files .*>
Order Deny,Allow
Deny From All
</Files>
# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
任何帮助表示赞赏!
答案 0 :(得分:0)
how do i by htaccess point anders.mysite.com to mysite.com/anders ? Important notice is that should not redirect.
您可以使用此规则:
RewriteCond %{HTTP_HOST}:%{REQUEST_URI} ^([^.]+)\.[^:]+:(?!/\1/).*$
RewriteRule ^ /%1%{REQUEST_URI} [L]
答案 1 :(得分:0)
对于1,在您的虚拟主机中只需添加ServerAlias
:
ServerAlias *.mysite.com
然后任何子域(包括www)将指向同一文档根目录。
如果您想将子域放在他们自己的目录中(并且因为您可以访问服务器配置),您可以使用mod_vhost_alias和VirtualDocumentRoot
指令:
VirtualDocumentRoot /path/to/your/htdocs/%1
因此,如果您请求blah.mysite.com
,则最终会以/path/to/your/htdocs/blah
作为文档根目录。
如果您需要URI中不存在的目录的目录名称,以便Kohana可以路由它们,您需要确保已加载mod_proxy:
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.
RewriteCond %{REQUEST_URI} !^/%1/
RewriteRule ^(.*)$ /%1/$1 [L,P]
使用正确的URI将请求代理回Kohana。