我们正在将网站迁移到我们的 cPanel 基础架构。客户使用 Nginx 在自己的基础架构上托管网站。他将他的 Nginx 配置文件发送给我们,我们将它们转换为 Apache Rewrite 规则。最终结果(仅显示相关行)如下所示:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ouvidoria/$ /ouvidoria/index.php
RewriteRule ^([^/\.]+)/?$ index.php?id=$1 [L]
RewriteRule ^news\/(.*)/?$ noticias.php?id=$1 [L]
一切都按预期工作,除了一页,即/ouvidoria
. 此特定页面在 public_html 上有一个同名目录,因此 RewriteRule 指向该ouvidoria/index.php
文件。问题是,由于某种原因,当我们访问/ouvidoria
我们被重定向到的 URL时/ouvidoria/?id=ouvidoria
,这似乎属于倒数第二条规则。所以这是第一个要解决的问题。
第二个是我们可以使用尾部斜杠 ( /ouvidoria/
) 访问 URL,它不会附加?id=ouvidoria
,但是,该网站的开发方式是根据 URL 加载侧边菜单。它只会在没有斜杠的情况下加载。即使我们从第一个问题中删除有问题的规则(这不是解决方案,因为在其他页面中需要它),它也会重定向/ouvidoria
到/ouvidoria/
,因此无法加载菜单。
任何有关如何使这些规则起作用的帮助将不胜感激。
编辑:
剩下的唯一问题是从/ouvidoria
to重定向/ouvidoria/
。网络标签截图:
重定向细节: