htaccess双重写规则

时间:2011-02-15 12:26:42

标签: apache .htaccess mod-rewrite

我目前正在使用此功能将domain.com/username重定向到以下地址

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ publicprofile.php?username=$1&%{QUERY_STRING}

我正在开发移动网站,因此我需要将移动用户重定向到移动网站。

这是我为移动重定向找到的代码

RewriteCond %{HTTP_USER_AGENT} ^.*iPhone.*$
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301]
RewriteCond %{HTTP_USER_AGENT} ^.*BlackBerry.*$
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301]
RewriteCond %{HTTP_USER_AGENT} ^.*Palm.*$
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301]

如何让它们同时工作?

2 个答案:

答案 0 :(得分:0)

把第二块放在第一块之前,你应该好好去。

如果需要,第二个块将执行标头重定向,这将导致新请求发生。在那之后,内部重写规则轮到他们了。

答案 1 :(得分:0)

请允许我优化您的规则:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (iphone|blackberry|palm|android) [NC]
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ publicprofile.php?username=$1 [QSA,L]

[NC]代表'不区分大小写'。 [QSA]是追加查询字符串。 您可以在mod_rewrite tester上测试您的规则。