htaccess 从 Apache 到 LiteSpeed 的迁移问题

问题描述 投票:0回答:3

我最近在后端进行了 URL spring 清理,目前正在努力处理其中一个 .htaccess 重定向。

我想重定向的是:

https://www.example.com/directory/?type=supplier&category=celebrant&sort=latest

应该去:

https://www.example.com/suppliers/type/celebrant

我最终得到了这个正则表达式,并在 https://technicalseo.com/tools/htaccess/ 上进行了测试,但由于某种原因,我的 LiteSpeed Enterprise 服务器似乎不喜欢它(其他正则表达式工作)。

RewriteCond %{REQUEST_URI} ^\/directory/$ [C]
RewriteCond %{QUERY_STRING} type=supplier&category=([a-zA-Z0-9-_]*) [C]
RewriteRule ^/?(.*)$ /suppliers/type/%1 [L,QSD,R=301]

对于为什么它不能与企业版 LiteSpeed 一起使用有什么想法吗?

更新:

我确实按照George Wang的建议启用了调试日志记录,我得到的是:

unknown rewrite condition flag while parsing: RewriteCond %{REQUEST_URI} ^/directory/$ [C]
Invalid rewrite condition while parsing: RewriteCond %{REQUEST_URI} ^/directory/$ [C]
unknown rewrite condition flag while parsing: RewriteCond %{QUERY_STRING} type=supplier&category=([a-zA-Z0-9-_]*) [C]
Invalid rewrite condition while parsing: RewriteCond %{QUERY_STRING} type=supplier&category=([a-zA-Z0-9-_]*) [C]
Ignored due to previous error while parsing: RewriteRule ^/?(.*)$ /wedding-suppliers/type/%1 [L,QSD,R=301]

对我来说相当模糊:(

regex .htaccess mod-rewrite url-rewriting litespeed
3个回答
1
投票
RewriteCond %{REQUEST_URI} ^\/directory/$ [C]
RewriteCond %{QUERY_STRING} type=supplier&category=([a-zA-Z0-9-_]*) [C]
RewriteRule ^/?(.*)$ /suppliers/type/%1 [L,QSD,R=301]

您需要删除

C
(
chain
) 标志。这是一个
RewriteRule
标志,它对
RewriteCond
指令没有意义。 (
C
标志将规则链接在一起,而不是指令。)

Apache 会因 500 内部服务器错误而中断,但我怀疑 LiteSpeed 可能只是默默地失败。

[a-zA-Z0-9-_]*
- 此正则表达式/字符类不正确,因为
-
(连字符)需要转义或出现在字符类的开头或结尾。否则它会尝试计算范围。这也可以使用
\w
(单词字符)简写字符类来简化。

您还可以删除第一个条件并在

RewriteRule
指令中执行 URL 路径检查。

例如:

RewriteCond %{QUERY_STRING} ^type=supplier&category=([\w-]*)
RewriteRule ^directory/$ /suppliers/type/%1 [QSD,R=301,L]

如果 LiteSpeed 不喜欢

QSD
标志(Apache 2.4 中的新功能),则将其删除并将
?
附加到替换字符串的末尾。 IE。
... /suppliers/type/%1? [R=301,L]

此重定向需要靠近您的

.htaccess
文件顶部。


0
投票

你可以试试

RewriteCond %{REQUEST_URI} ^/directory/$ [C]

看看有没有帮助。如果没有,您可能需要打开重写调试日志记录以找出发生了什么。 :-)


0
投票

2024-07-10 03:01:55.845484 [错误] [2058445] [T0] [APVH_v24.ro.antena24.ro:443:REWRITE] 解析时重写条件无效:RewriteCond ${LeechProtect:/home/antena24:% {REMOTE_USER}:%{REMOTE_ADDR}:2:eeOS2Zi9LKPuafuONWadN0juntwaRCeM} 水蛭

如果出现错误,此通知会显示在 cpanel 中。这是严重的事情吗?我的网站是这里

© www.soinside.com 2019 - 2024. All rights reserved.