0

我通过cPanelmobile创建了一个名为我的网站的子域。我将移动设备重定向到该子域,但那里有 javascript 可以对实际域进行 AJAX 调用。我已经组织了这些调用去。但是,这些都没有通过,我怀疑这是因为它正在寻找my ,但该请求应该在.htaccess中重写为。website.com/mobile/....../mobilewebsite.com/index.php?params=mobile/...

这是.htaccess:

# redirect phones/tablets to mobile site
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC]
RewriteCond %{HTTP_HOST} !mobile\.website\.com [NC]
RewriteCond %{REQUEST_URI} !^/mobile [NC]
RewriteRule ^(.*)$ http://www.mobile.website.com/$1 [L,R=302]

# not a file or directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# website.com/home => website.com/index.php?params=home
RewriteRule ^(.+)(\?.+)?$ index.php?params=$1 [L,QSA]

这适用于我的本地计算机,但不适用于实时服务器。我通过本地创建了一个 sudomain

<VirtualHost *:80>
    DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/website/mobile"
    ServerName mobile.website.local
</VirtualHost>

它运行良好:当我转到mobile.website.localor时website.local/mobile,我得到了移动站点,当我转到时,website.local/mobile/users/login我得到了 AJAX 请求的正确 JSON 输出。

我怎样才能让我的mobile子域保持活动状态,但要使用最后一个重写规则转发/mobile/请求?website.com/mobile/...

谢谢!

4

1 回答 1

0

只需为您的 /mobile 添加特定的重定向,强制忽略文件或目录语句:

RewriteCond %{REQUEST_URI} ^/mobile [NC]
RewriteRule ^(.+)(\?.+)?$ index.php?params=$1 [L,QSA]

# redirect phones/tablets to mobile site
RewriteCond %{HTTP_HOST} !mobile\.website\.com [NC]
RewriteCond %{REQUEST_URI} !^/mobile [NC]
RewriteCond %{QUERY_STRING}  !^params=mobile(.*)$
RewriteRule ^(.*)$ http://www.mobile.website.com/$1 [L]

# not a file or directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# website.com/home => website.com/index.php?params=home
RewriteRule ^(.+)(\?.+)?$ index.php?params=$1 [L,QSA]

有什么让我知道,我会看看我是否可以提供帮助:)

于 2012-04-17T21:31:22.660 回答