mod_rewrite 多语言 URL 多层次
mod_rewrite multi language with URL multi level
拥有此 .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/?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=zh
如果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/ [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 服务器进行必要的更改才能使这些主机名正常工作。通常,这将通过创建通配符 DNS 条目映射 *.domain.com 到此服务器来完成。您需要查阅特定 DNS 服务器的文档以了解如何完成此操作。
拥有此 .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/?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=zh
如果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/ [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 服务器进行必要的更改才能使这些主机名正常工作。通常,这将通过创建通配符 DNS 条目映射 *.domain.com 到此服务器来完成。您需要查阅特定 DNS 服务器的文档以了解如何完成此操作。