基本上,我有一个单独的台式机和移动网站。 两者都与单个后端通信。移动版本通过REST APIS进行通信。
想法是将两个站点都托管在一个域中。 www.example.com。并在.htaccess中设置规则,以查看请求是否来自移动设备,请从另一个文件夹而不是根文件夹获取网站内容。移动内容位于文件夹/ pwa中。
udfs.foo
我尝试过类似的事情。
var result = dataPage.Where(x =>
DbHelper.byPropertyContains(x.udfs, field, values)
);
来自Android移动设备的所有请求都路由到/ pwa,但问题是对REST APIS的调用失败。 所有其余的API调用都具有如下的URL结构
SO when accessed from mobile domain should be www.example.com, not example.com/pwa
我如何使其工作?如果请求来自移动设备,则仅网站内容应来自/ pwa文件夹,其他所有内容均应正常工作。
.htaccess文件的全部内容
Options +FollowSymlinks
RewriteEngine on
# Android devices
RewriteCond %{HTTP_USER_AGENT} Android
RewriteCond %{REQUEST_URI} !/pwa
RewriteRule ^(.*)$ /pwa/$1 [NC,L]
请帮助!
答案 0 :(得分:3)
您可以使用此规则跳过/pwa
和/api
来接收来自Android的请求:
# Android devices
RewriteCond %{HTTP_USER_AGENT} Android [NC]
RewriteCond %{THE_REQUEST} !\s/+(pwa|api) [NC]
RewriteRule !^pwa/ pwa%{REQUEST_URI} [L,NC]
答案 1 :(得分:0)
要让api
照常工作,您应该将其排除在请求之外:
RewriteCond %{HTTP_USER_AGENT} Android [NC]
RewriteCond %{THE_REQUEST} !(pwa|api) [NC]
RewriteRule ^ pwa%{REQUEST_URI} [L]
因为可能有两个api
进入请求,一个URI
像这样/api/
,第二个是在像这样的{{1 }}因此,根据先前的规则,任何与请求一起出现的URI
都将被排除。