拥有这个.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===>/premios.php?lang=pt
http://en.example.com/awards===>/premios.php?lang=en-
如果URL有一个多级,如:
RewriteRule ^gallery/funny$ gallery-funny.php [L,QSA]
URLhttp://pt.example.com/gallery/funny不起作用!
有什么帮助吗?我在这里迷路了。
您希望系统中的每个用户都自动将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被设置为username。
最后,我们的RewriteRule捕获整个请求的URL,并将其从该用户的主目录中提供。例如,请求http://rbowen.domain.com/foo/bar.html将导致提供文件/home/rbowen/www/foo/bar.html。
需要注意的是,您仍然需要对DNS服务器进行必要的更改,以使这些主机名正常工作。通常,这将通过创建一个通配符DNS条目来完成,该条目将*.domain.com映射到此服务器。您需要查阅特定DNS服务器的文档,了解如何完成此操作。