我正在尝试为我的移动网站制作漂亮的网址。我有一个桌面工作站点,并将为用户提供进入移动版本的选项。
我在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来绕过,但是想用另一种方式。
我希望有人能帮助我解决这个问题;)
答案 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]