Forum Moderators: phranque

Message Too Old, No Replies

Need Help: Corect the regex for redirect normal page to mobile web

         

binhaus

8:09 am on Jan 10, 2011 (gmt 0)

10+ Year Member



Dear ..
I doing some app for android and Iphone .. so i need to redirect web pages to the news mobile style web..
I got some htaccess code from internet but not work in my site cause of regex

sample: origin link:
  http://www.xaluan.com/modules.php?name=News&file=article&sid=236233

mobi link:
  http://www.xaluan.com/modules.php?name=News&file=article_mobi&sid=236233


here the htacess i'm working on

#Redirect if mobile device
RewriteCond %{HTTP_USER_AGENT} android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|opera\ m(ob|in)i|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ (ce|phone)|xda|xiino [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\ wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r\ |s\ )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\ u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(\ i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\ |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(\ |\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\ g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-|\ |o|v)|zz)|mt(50|p1|v\ )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\ )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|\ )|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-) [NC]
RewriteRule (.*)file=article&sid=([0-9]+)$ /modules.php?name=News&file=article_mobi&sid=$1 [R,L]



I'm trying to corect the RewriteRule but not work .. what im doing worng .. please corect
thanks

g1smd

8:42 am on Jan 10, 2011 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month



RewriteRule cannot "see" query strings. You need to test QUERY_STRING with an additional RewriteCond.

Additionally, [R,L] sends a 302 redirect. You may need [R=301,L] here and the redirect target should specify the protocol and domain name too.

Finally, some parts of the pattern are testing for specific model numbers, most of which are very old. The list is at best very incomplete/inaccurate.

binhaus

12:02 pm on Jan 10, 2011 (gmt 0)

10+ Year Member



Additionally, [R,L] sends a 302 redirect. You may need [R=301,L]


thanks for corect me.


some parts of the pattern are testing for specific model numbers, most of which are very old. The list is at best very incomplete/inaccurate.


Those code just copy from some where on internet, I will clean it, if you have knowledge about this please help .


RewriteRule cannot "see" query strings. You need to test QUERY_STRING with an additional RewriteCond.


I'm just new bie about htaccess .. could you write a line that help me out
thanks a ton.

binhaus

1:16 pm on Jan 10, 2011 (gmt 0)

10+ Year Member



thank from your suggests and spend few minute digging on Google meaning of QUERY_STRING.

here my code: i have test i work but not sure any things wrong ..
can any one check:

RewriteCond %{QUERY_STRING} name=News&file=article&sid=([0-9]+)$
RewriteRule ^(.*)$ /modules.php?name=News&file=article_mobi&sid=%1 [R=301,L]

jdMorgan

3:52 pm on Jan 14, 2011 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Add your user-agent RewriteCond at the top, and correct the RewriteRule as shown:

# Redirect if mobile device and the old query string parameter name is requested
... add your user-agent RewriteCond here ...
RewriteCond %{QUERY_STRING} ^name=News&file=article&sid=([0-9]+)$
RewriteRule ^modules\.php$ http://www.example.com/modules.php?name=News&file=article_mobi&sid=%1 [R=301,L]

Jim

binhaus

7:22 am on Jan 15, 2011 (gmt 0)

10+ Year Member



thanks a ton :)