Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess htaccess内容协商在LiteSpeed服务器上不工作_.htaccess_Url Rewriting_Litespeed - Fatal编程技术网

.htaccess htaccess内容协商在LiteSpeed服务器上不工作

.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

我们的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 %{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]标志都没有什么区别。问题依然存在。