Apache mod-重写重定向而不用参数改变url

Apache mod-rewrite redirect without changing url with parameters

下面是我的配置,它使用参数从 detailsPage.html 重定向到 detailsPage.php 但 url 正在从 detailsPage.html 更改为 detailsPage.php 有人可以帮忙吗这是如何在不更改 URL

的情况下重定向
<IfModule mod_rewrite.c> 
LogLevel alert rewrite:trace3
Options +FollowSymlinks -MultiViews
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^/detailsPage.html$ http://exmaple.com/detailsPage.php?%{QUERY_STRING} [L,QSA,NC]

</IfModule>
RewriteRule ^/detailsPage.html$ http://exmaple.com/detailsPage.php?%{QUERY_STRING} [L,QSA,NC]

您需要从 替换 字符串中删除 方案 + 主机名。通过包含绝对 URL,Apache 将隐式触发 302 外部重定向,而不是内部重写。

您还需要删除 %{QUERY_STRING} 替换 字符串和 RewriteRule 上的 QSA 标志,否则这将使任何请求 URL 上的查询字符串。默认情况下会传递查询字符串,因此在这方面您无需执行任何操作(除非您要合并两个不同的查询字符串)。

请尝试以下操作:

RewriteRule ^/detailsPage\.html$ /detailsPage.php [L,NC]

我还会质疑 NC 标志的使用?您是否特别需要 case-insensitive 匹配项,因为这可能会造成重复内容问题。

注意:尽管你的问题被标记为 .htaccess,我假设这些指令必须直接在你的服务器配置或 <VirtualHost> 容器中?因为这在 .htaccess 中不起作用。