奇怪的 RewriteRule 导致错误
Strange RewriteRule causes errors
我在 Litespeed 服务器上使用 PrestaShop,这里是管理面板的 .htaccess 的一部分:
# Keep legacy entry points
RewriteRule ^(ajax|ajax_products_list|ajax-tab|backup|cron_currency_rates)\.php - [P]
RewriteRule ^(displayImage|drawer|footer\.inc|functions|get-file-admin)\.php - [P]
RewriteRule ^(grider|header\.inc|init|login|password|pdf|searchcron)\.php - [P]
# If the URL is a legacy on index.php?controller=..., do not rewrite (let the legacy take it)
RewriteCond %{QUERY_STRING} (^|&)controller=|(^|&)tab=
RewriteRule .* - [P]
我看到很多关于这些的日志:
2021-10-30 16:01:17.163186 WARN [225891] [T0] [REWRITE] Detects bad proxy action without updating target URL. Ignore. while parsing: RewriteRule ^(ajax|ajax_products_list|ajax-tab|backup|cron_currency_rates)\.php - [P]
2021-10-30 16:01:17.163218 WARN [225891] [T0] [REWRITE] Detects bad proxy action without updating target URL. Ignore. while parsing: RewriteRule ^(displayImage|drawer|footer\.inc|functions|get-file-admin)\.php - [P]
2021-10-30 16:01:17.163228 WARN [225891] [T0] [REWRITE] Detects bad proxy action without updating target URL. Ignore. while parsing: RewriteRule ^(grider|header\.inc|init|login|password|pdf|searchcron)\.php - [P]
2021-10-30 16:01:17.163243 WARN [225891] [T0] [REWRITE] Detects bad proxy action without updating target URL. Ignore. while parsing: RewriteRule .* - [P]
2021-10-30 16:01:17.581695 WARN [225890] [T0] [REWRITE] Detects bad proxy action without updating target URL. Ignore. while parsing: RewriteRule .* - [P]
任何人都可以描述那些 RewriteRules 是什么以及为什么我会收到这些错误吗?
谢谢!
P
标志的使用在这种情况下显然是一个错误。我会说这是一个错字,不是在每条规则上!他们可能打算使用 PT
(直通),尽管 L
(最后)(或 END
)更可取。
这些指令的目的是防止进一步处理(即发生其他重写)这些特定的“遗留”URL。
将所有 4 条规则的 [P]
更改为 [L]
以解决此问题。
例如:
RewriteRule ^ - [L]
(同时把最后一条规则的.*
改成^
,因为不需要真的匹配所有,只要匹配成功即可。)
我在 Litespeed 服务器上使用 PrestaShop,这里是管理面板的 .htaccess 的一部分:
# Keep legacy entry points
RewriteRule ^(ajax|ajax_products_list|ajax-tab|backup|cron_currency_rates)\.php - [P]
RewriteRule ^(displayImage|drawer|footer\.inc|functions|get-file-admin)\.php - [P]
RewriteRule ^(grider|header\.inc|init|login|password|pdf|searchcron)\.php - [P]
# If the URL is a legacy on index.php?controller=..., do not rewrite (let the legacy take it)
RewriteCond %{QUERY_STRING} (^|&)controller=|(^|&)tab=
RewriteRule .* - [P]
我看到很多关于这些的日志:
2021-10-30 16:01:17.163186 WARN [225891] [T0] [REWRITE] Detects bad proxy action without updating target URL. Ignore. while parsing: RewriteRule ^(ajax|ajax_products_list|ajax-tab|backup|cron_currency_rates)\.php - [P]
2021-10-30 16:01:17.163218 WARN [225891] [T0] [REWRITE] Detects bad proxy action without updating target URL. Ignore. while parsing: RewriteRule ^(displayImage|drawer|footer\.inc|functions|get-file-admin)\.php - [P]
2021-10-30 16:01:17.163228 WARN [225891] [T0] [REWRITE] Detects bad proxy action without updating target URL. Ignore. while parsing: RewriteRule ^(grider|header\.inc|init|login|password|pdf|searchcron)\.php - [P]
2021-10-30 16:01:17.163243 WARN [225891] [T0] [REWRITE] Detects bad proxy action without updating target URL. Ignore. while parsing: RewriteRule .* - [P]
2021-10-30 16:01:17.581695 WARN [225890] [T0] [REWRITE] Detects bad proxy action without updating target URL. Ignore. while parsing: RewriteRule .* - [P]
任何人都可以描述那些 RewriteRules 是什么以及为什么我会收到这些错误吗?
谢谢!
P
标志的使用在这种情况下显然是一个错误。我会说这是一个错字,不是在每条规则上!他们可能打算使用 PT
(直通),尽管 L
(最后)(或 END
)更可取。
这些指令的目的是防止进一步处理(即发生其他重写)这些特定的“遗留”URL。
将所有 4 条规则的 [P]
更改为 [L]
以解决此问题。
例如:
RewriteRule ^ - [L]
(同时把最后一条规则的.*
改成^
,因为不需要真的匹配所有,只要匹配成功即可。)