[HTACCESS] ModRewrite

Discussion in 'PHP' started by iKNG, 21 Oct 2013.

  1. iKNG

    iKNG New Member

    Joined:
    23 Jan 2013
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    Извиняйте, если не в тот раздел, но более подходящего не нашел. У меня проблема с ModRewrite. Делаю мобильную версию для сайта. Необходимо, чтобы, если пользователь обращался к папке m, ему показывало мобильную версию. В том числе и сохранялся GET. Примерно так:
    Code:
    Options All -ExecCGI -Indexes -Includes +FollowSymLinks
    RewriteEngine On 
    RewriteRule ^m/?(\??(.*))?$ index.php?design=m&$2
    Пробовал разными способами изменять регулярное выражение, но результат остается один и тот же: в GET ничего кроме design=m нету, даже если, например, обращаться к site.ru/m/?page=somepage. Помогите.
    P.S. Проверял через http://gskinner.com/RegExr/ Судя по всему, в JavaScript то же регулярное выражение работает так, как и было задумано.
    P.S.S. Тему про ModRewrite заметил только после создания темы.
     
    #1 iKNG, 21 Oct 2013
    Last edited: 21 Oct 2013
  2. AndyTitan

    AndyTitan New Member

    Joined:
    18 Jul 2012
    Messages:
    17
    Likes Received:
    1
    Reputations:
    2
    покури
    http://php.ru/forum/viewtopic.php?f=13&t=2266
     
  3. Sum.cogitans

    Sum.cogitans Elder - Старейшина

    Joined:
    7 Sep 2013
    Messages:
    173
    Likes Received:
    32
    Reputations:
    19
    Как по мне конструкция в корне сомнительная.
    Я для мобильных версий на субдомен редирект делаю с сохранением URL.

    Примерно так:

    Code:
    <IfModule mod_rewrite.c>
    	RewriteEngine On
    	RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos" [NC]
    	RewriteRule ^$ http://m.%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
    </IfModule>
    Ну и обратный для PC хостов с субдомена.
    Так в дальнейщем маштабировать \ работать удобней и траф считать и т.д.
     
    #3 Sum.cogitans, 28 Oct 2013
    Last edited: 28 Oct 2013
  4. AndyTitan

    AndyTitan New Member

    Joined:
    18 Jul 2012
    Messages:
    17
    Likes Received:
    1
    Reputations:
    2
    Code:
    #Enables Rewrite Engine
    RewriteEngine On
    
    #Sets Document Root
    RewriteBase /
    
    #Checks if user DID NOT request the mobile version of site anywhere in the URI
    RewriteCond %{REQUEST_URI} !^mobile [NC]
    
    #Conditional to check for mobile user agents (provided by https://github.com/h5bp/mobileboilerplate.com)
    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]
    
    #Second Conditional to check for mobile user agents (provided by https://github.com/h5bp/mobileboilerplate.com)
    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]
    
    #The rewrite appends the original requested URI to the end of the mobile subdirectory which is located in the same directory as the .htaccess file.  I also removed the leading '/' in front of mobile because it was unnecessary.
    RewriteRule ^(.*)$ mobile/$1 [QSA,L]