使用用户代理进行.htaccess URL重定向

时间:2014-12-05 08:41:23

标签: .htaccess mod-rewrite url-rewriting

我一直试图找到解决方案,但没有办法。我有以下htaccess文件,它执行以下操作:

  1. 它将 site.com/m/page 重定向到 site.com/m/#page

  2. 我将 site.com/d/page 重定向到 site.com/m/#page

  3. 删除 .php 扩展程序以及我在页面前面的常用_ 模式

  4. 到目前为止的代码:

    Options +FollowSymlinks -MultiViews
    
    RewriteEngine On    
    RewriteBase /
    
    RewriteRule ^[dm]/(.+)$ /m/#$1 [R=302,NE,L,NC]
    
    ## hide .php extension
    RewriteCond %{THE_REQUEST} \s/+common_([^.]+)\.php[\s?] [NC]
    RewriteRule ^ %1 [R=302,L,NE]
    
    ## To internally forward
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/common_$1.php -f
    RewriteRule ^(.+?)/?$ common_$1.php [L]
    

    我想要下面的内容:

    a)如果某些用户从iPhone进入' site.com/m /...' ,继续(什么都不做)

    b)如果某个用户从桌面进入iPad' site.com/m/page '将他重定向到' site.com/d/#page '

    我真的很感激一些帮助。

1 个答案:

答案 0 :(得分:0)

您可以为此使用新规则:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_USER_AGENT} !iphone [NC]
RewriteRule ^m/(.+)$ /d/#$1 [R=302,NE,L,NC]

RewriteRule ^[dm]/(.+)$ /m/#$1 [R=302,NE,L,NC]

## hide .php extension
RewriteCond %{THE_REQUEST} \s/+common_([^.]+)\.php[\s?] [NC]
RewriteRule ^ %1 [R=302,L,NE]

## To internally forward
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/common_$1.php -f
RewriteRule ^(.+?)/?$ common_$1.php [L]