.htaccess htaccess内容协商在LiteSpeed服务器上不工作
我们的htaccess中有代码,为移动用户提供不同的web模板,如.htaccess htaccess内容协商在LiteSpeed服务器上不工作,.htaccess,url-rewriting,litespeed,.htaccess,Url Rewriting,Litespeed,我们的htaccess中有代码,为移动用户提供不同的web模板,如 RewriteCond %{HTTP_USER_AGENT} "Mobile" RewriteCond %{REQUEST_URI} "!_mob.php" RewriteRule ^(.*).php$ /$1_mob.php [L,QSA] 因此,如果条件的计算结果为true,文件foo.php将在内部重写为foo_mob.php。 现在我们有了一个额外的“pretty url
RewriteCond %{HTTP_USER_AGENT} "Mobile"
RewriteCond %{REQUEST_URI} "!_mob.php"
RewriteRule ^(.*).php$ /$1_mob.php [L,QSA]
因此,如果条件的计算结果为true,文件foo.php将在内部重写为foo_mob.php。
现在我们有了一个额外的“pretty url”指令,它根据查询字符串将描述性类别和产品页面名称重写为内部格式,如
RewriteCond %{REQUEST_URI} ^/category1\.htm
RewriteRule ^.*$ /index.php?cPath=1 [L,QSA]
结合以上内容,这将向移动设备上的用户显示模板索引_mob.php。这在Apache服务器上已经运行了很多年了,但在我们现在迁移到LiteSpeed服务器之后就不再运行了。对于具有显式.php扩展名的请求,将显示移动模板,但对于那些首先重写为index.php的请求,则不会显示移动模板(其中还包括默认情况下重写为index.php的root/)
如果您在使用Litespeed时同时使用上述两种.htaccess规则,则问题在于
L
标记在.htaccess
中两次
[五十] tag代表Last,在Apache和Litespeed中有不同的含义
在[L]标志之后的规则集仍然可以由Apache在后续迭代中处理,但在Litespeed和大多数其他上下文中并非如此
附加信息和官方文档是。请在您的问题中发布完整的htaccess文件,以及以下信息:从哪个url到要重写/重定向的url?谢谢。@RavinderSingh13以上的细节应该足够了。通过广泛的测试,我已经缩小了范围。htaccess文件的其余部分对此没有影响。感谢您的回复。我已经被告知这一点,但事实并非如此(至少对于我遇到这些问题的服务器来说不是这样)。如果规则RewriteRule^page1.php/page2.php[L]*和RewriteRule^page2.php/page3.php[L]*相互重叠,那么请求page1.php时我会得到page3.php,因此它会再次解析第一次重写。在任何情况下,删除所有[L]标志都没有什么区别。问题依然存在。