Vyskúšal (-a) som všetky návrhy na tejto stránke (Použitie .htaccess na presmerovanie zastaraných prehliadačov) ale žiadna práca. "Som googled, ale nenašiel som pracovný príklad."
Žiadna z nich nefunguje pri práci s prehliadačmi s dvojcifernými číslami verzií.
Napríklad riadok pod blokuje Opera v.1.xa Opera v.12.x:
RewriteCond %{HTTP_USER_AGENT} "Opera/1." [NC,OR]
Nižšie uvedené kódy nefungujú:
RewriteCond %{HTTP_USER_AGENT} "Opera/[1-11]." [nc,or]
RewriteCond %{HTTP_USER_AGENT} "Opera/[1-9][0-1]?." [nc,or]
Aký je správny kód na presmerovanie verzií Opery 1.x-11.x?
Urobil som nejaké ďalšie testovanie a našiel som niečo, čo je pre mňa zvláštne. Ak sa pokúšam o prístup na stránku s verziou Opera 11, pravidlo prepísania sa neochotne spustí pri použití nasledujúcich možností:
RewriteCond %{HTTP_USER_AGENT} "Opera/9." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/8." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/7." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/6." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/5." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/4." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/3." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/2." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/1." [NC,OR]
Ak jednoducho komentujem ...
RewriteCond %{HTTP_USER_AGENT} "Opera/9." [NC,OR]
... prehliadač Opera verzia 11 nedostane presmerovaný.
Ak chcete byť presnejší, snažím sa presmerovaťniektoré prehliadače s určitými verziami na konkrétnu stránku, ak sa zhodujú s pravidlami. Tu je vzorka, ale nefunguje tak, ako bolo zamýšľané, a myslím si, že tam musí byť stručný spôsob, ako napísať každú podmienku:
<ifmodule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} "Firefox/3." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Firefox/2." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Firefox/1." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/9." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/8." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/7." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/6." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/5." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/4." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/3." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/2." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/1." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE 7." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE 6." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE 5." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE 4." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE 3." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE 2." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE 1." [NC]
RewriteRule . http://www2.mysite.com/page.php [L]
</ifmodule>
Tu je to, čo sa snažím robiť:
<ifmodule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} "Firefox/if less than version 3." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/if less than version 10.1." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE if less than version 7." [NC]
RewriteRule . http://www2.mysite.com/page.php [L]
</ifmodule>
odpovede:
3 pre odpoveď č. 1Nižšie uvedený kód robí to, čo chcem:
<ifmodule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} "Firefox/[1-3]." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Opera/9..*Version/(1[10]|[1-9]). [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/[1-8]." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE [1-7]." [NC]
RewriteRule . http://www2.mysite.com/page.php [L]
</ifmodule>
Ďakujem Jon Lin! Vaše návrhy kódu mi pomohli lepšie porozumieť :)
1 pre odpoveď č. 2
skúste:
RewriteCond %{HTTP_USER_AGENT} Opera/(1[10]|[1-9]). [NC,OR]
Keď vidíme, ako užívateľský agent Opery nerešpektuje formát, ktorý očakávate, stačí tento riadok vylúčiť operu 12:
RewriteCond %{HTTP_USER_AGENT} !Opera/9..*Version/12. [NC,OR]