m.example.com不会正确重定向

时间:2014-11-19 12:39:58

标签: php .htaccess redirect mobile

我正在尝试为我的移动网站制作漂亮的网址。我有一个桌面工作站点,并将为用户提供进入移动版本的选项。

我在index.php的同一个目录中有一个名为mobile.php的php文件。站点的参数将是相同的。桌面版的参数工作正常,但是。如果我输入m.example.com,它将转到我的桌面版本,但是如果我输入m.example.com/something,它将转到移动版本。

    # changing www to nonwww
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

#redirect for the mobile site
RewriteCond %{HTTP_HOST} ^m.example.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI}  ^/([^/]+)/?([^/]*)?/?([^/]*)?/?([^/]*)?/?   [NC]
RewriteRule ^(.*)$ mobile.php?site=%1&brand=%2&model=%3&repid=%4 [L]



#redirect for dekstop.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}  ^/([^/]+)/?([^/]*)?/?([^/]*)?/?([^/]*)?/?   [NC]
RewriteRule .*    index.php?site=%1&brand=%2&model=%3&repid=%4  [L]

此外。当我在移动网站时,我尝试链接到我的资源src =" /image.png"。在桌面上它可以正常工作,但移动网站将为文件m.example.com/image.png创建网址,但无法找到资源。我通过输入整个URL来绕过,但是想用另一种方式。

我希望有人能帮助我解决这个问题;)

1 个答案:

答案 0 :(得分:0)

看起来罪魁祸首是你的第二条规则,它与着陆页URI /不匹配,试试这个:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

#redirect for the mobile site
RewriteCond %{HTTP_HOST} =m.example.com
RewriteRule ^/?$ mobile.php [L]

RewriteCond %{HTTP_HOST} =m.example.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?([^/]*)?/?([^/]*)?/?([^/]*)?/? mobile.php?site=$1&brand=$2&model=$3&repid=$4 [L,QSA]

#redirect for dekstop.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?([^/]*)?/?([^/]*)?/?([^/]*)?/?  index.php?site=$1&brand=$2&model=$3&repid=$4 [L,QSA]