首页 > 解决方案 > 将 NGINX 重写规则转换为 Apache htaccess

问题描述

我有一个客户正在从 NGINX 网络服务器迁移到 Apache。一切都很简单,没有什么复杂的,但是因为我是一个 NGINX 人,我忘记了如何将 NGINX 重写规则转换为 apache 规则。

例如,这些是 NGINX 重写

rewrite ^/Tower-Topics-Calendar/?$ https://$host/events/ permanent;

我如何将类似的东西转换.htaccess为与 Apache 一起使用?

标签: apache.htaccessnginx

解决方案


rewrite ^/Tower-Topics-Calendar/?$ https://$host/events/ permanent;

这看起来像是一个外部 301 重定向/Tower-Topics-Calendar(带有和不带有斜杠)到https://<host>/events/-<host>请求中的主机名相同,并且您在目标中明确声明了 HTTPS 协议。

.htaccess您可以使用 mod_rewrite 实现此目的。例如:

RewriteEngine On
RewriteRule ^Tower-Topics-Calendar/?$ https://%{HTTP_HOST}/events/ [R=301,L]

RewriteRule 请注意模式中没有斜杠前缀。

但是,如果您不需要特别包含 HTTPS 方案(即,这已经规范化),那么您可以使用单个 mod_aliasRedirectMatch指令。例如:

RedirectMatch 301 ^Tower-Topics-Calendar/?$ /events/

或者,要包含 HTTPS 协议,您需要对主机名进行硬编码:

RedirectMatch 301 ^Tower-Topics-Calendar/?$ https://example.com/events/

推荐阅读