有了这个.htaccess代码:
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} !www.example.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).example.com [NC]
RewriteRule ^(.*)/(.*)$ http://example.com/$2?lang=%2 [L,P]
</IfModule>
这很棒!对于以下示例:
RewriteRule ^awards$ premios.php [L,QSA]
http://pt.example.com/awards ==&gt; /premios.php?lang=pt
http://en.example.com/awards ==&gt; /premios.php?lang=en
如果URL具有如下多级别:
RewriteRule ^gallery/funny$ gallery-funny.php [L,QSA]
网址http://pt.example.com/gallery/funny不起作用!
有任何帮助吗?我迷路了。
答案 0 :(得分:1)
您希望系统上的每个用户自动将username.domain.com映射到其主目录。
RewriteEngine On
# Skip www.domain.com
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com
RewriteRule ^/(.*)$ /home/%1/www/$1 [L]
第一个RewriteCond会跳过www.domain.com的内容请求,我们希望通过常规机制处理这些请求。排除您不希望映射到主目录的其他主机名也可能很有用。
第二个RewriteCond用于捕获请求的主机名。当在RewriteCond中捕获匹配(通过使用括号)时,捕获的模式将进入变量%1,%2,%3,依此类推。在这种情况下,对username.domain.com主机名的请求将导致%1被设置为用户名。
最后,我们的RewriteRule捕获整个请求的URL,并使其从该用户的主目录中提供。例如,http://rbowen.domain.com/foo/bar.html的请求将导致文件/home/rbowen/www/foo/bar.html被提供。
请务必注意,您仍需要对DNS服务器进行必要的更改才能使这些主机名正常工作。通常,这可以通过创建将* .domain.com映射到此服务器的通配符DNS条目来完成。您需要查阅特定DNS服务器的文档,了解如何完成此操作。