Правило двойного перезаписи htaccess - PullRequest
0 голосов
/ 15 февраля 2011

Я сейчас использую это для перенаправления 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 голосов
/ 16 февраля 2011

Разрешите оптимизировать ваши правила:

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 .

0 голосов
/ 15 февраля 2011

Поставьте второй блок перед первым, и вам будет хорошо идти.

Второй блок при необходимости перенаправит заголовок, что вызовет новый запрос.После этого внутренние правила переписывания имеют свою очередь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...