.htaccess - htaccess 内容协商在 LiteSpeed 服务器上不起作用
问题描述
我们的 htaccess 中有代码,可以为移动用户提供不同的 Web 模板,例如
RewriteCond %{HTTP_USER_AGENT} "Mobile"
RewriteCond %{REQUEST_URI} "!_mob.php"
RewriteRule ^(.*).php$ /$1_mob.php [L,QSA]
因此,如果条件评估为真,文件foo.php将在内部重写为foo_mob.php 。现在我们有一个额外的 'pretty-url' 指令,它根据查询字符串将描述性类别和产品页面名称重写为内部格式,例如
RewriteCond %{REQUEST_URI} ^/category1\.htm
RewriteRule ^.*$ /index.php?cPath=1 [L,QSA]
结合上述内容,这应该会在移动设备上向用户显示模板index_mob.php 。多年来,这在 Apache 服务器上运行良好,但在我们现在转移到 LiteSpeed 服务器后就不再工作了。移动模板显示为带有显式 .php 扩展名的请求,但不是那些首先重写为index.php的请求(其中还包括默认情况下重写为index.php的根 / )
任何解决问题的帮助将不胜感激。
解决方案
如果您在使用 Litespeed 时在组合中同时使用上述两个 .htaccess 规则,则问题是L
标签在.htaccess
两次中。
[L] 标签代表 Last,在 Apache 和 Litespeed 中有不同的含义。
[L] 标志之后的规则集可能仍由 Apache 在后续迭代中处理,但在 Litespeed 和大多数其他上下文中并非如此。
附加信息和官方文档在这里。
推荐阅读
- javascript - Google 广告 dfp js 代码未呈现所有广告位
- java - 如何通过从第一类调用第二类的方法来调用第三类的方法
- c# - 获取 ListView 内开关的选中状态
- r - 如何更换
特定列的值? - postgresql - 当名称实际上是大写时,如何使用确保表名是小写的查询?
- javascript - TypeError:无法读取未定义 bcryptjs 会话的属性“_id”
- c# - 如何使用反射以优雅的方式访问嵌套对象?
- angular - 如何在不覆盖的情况下加载数据?
- python - 如何从气流连接中保存为字符串的字节中获取字节值?
- android - 如何创建一些图像较小而一些图像较大的 Instagram 搜索布局