/ / Ako používať .htaccess na presmerovanie zastaraných prehliadačov - .htaccess, presmerovanie, prehliadač, prepísať, zastarané

Ako používať .htaccess na presmerovanie zastaraných prehliadačov - .htaccess, presmerovanie, prehliadač, prepísanie, zastarané

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ď č. 1

Nižš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]