Apache根据用户代理提供不同的文件

时间:2018-04-30 07:58:01

标签: regex apache

我的问题当用户从移动设备,桌面设备或平板电脑访问我的网站时,我想提供不同的index.html文件。我正在使用Apache并检查我是否可以基于用户代理执行此操作。我编写了代码,但在某些情况下会应用错误的条件(例如,将显示带有Mobile的用户标题桌面版本的Android)。同样在桌面的情况下一切正常但是当选择移动设备或平板电脑时,我会收到404.此外,我确信js / html代码适用于我在本地测试的所有情况。

我的问题我用于条件的regrex是否正确?第一,第二和第三不起作用。你也知道我为什么在试图访问手机或平板电脑时获得404?

我的代码的httpd.conf

<IfModule dir_module>
    <If "%{HTTP_USER_AGENT} in { 'iPhone', 'Android' } and %{HTTP_USER_AGENT} =~ /Mobile/">
    DirectoryIndex mobile/index.html
    </If>
    <ElseIf "%{HTTP_USER_AGENT} in { 'BlackBerry', 'Opera Mini', 'Windows Phone' }">
    DirectoryIndex mobile/index.html
    </ElseIf>
    <ElseIf "%{HTTP_USER_AGENT} in { 'Tablet', 'Android' } and !%{HTTP_USER_AGENT} =~ /Mobile/">
    DirectoryIndex tablet/index.html
    </ElseIf>
    <ElseIf "%{HTTP_USER_AGENT} =~ /iPad/">
    DirectoryIndex tablet/index.html
    </ElseIf>
    <Else>
        DirectoryIndex desktop/index.html
    </Else> 
</IfModule>

文件结构

htdocs --- desktop
                - index.html
                - desktop.bundle.js
       --- mobile
                - index.html
                - mobile.bundle.js
       --- tablet 
                - index.html 
                - tablet.bundle.js

0 个答案:

没有答案