php - 重定向 301/重写难题

标签 php apache .htaccess mod-rewrite

在我的网站上,用户可以添加各种需要重定向的 URL。

例如;来自:domain.com/oldpage/36/

对此:domain.com/newpage/47/

它们像这样添加到 .htaccess 中:

Redirect 301 /oldpage/36/ /new-page/47/

但是当访问旧页面时,他们得到这个:

domain.com/newpage/47/?pid=36&pagename=oldpage

我很确定这些重写规则导致了这种困境:

RewriteRule ([^.]+)/([0-9]+)/$ index.php?pid=$2&pagename=$1
RewriteRule ([^.]+)/([0-9]+)/([^.]+) index.php?pid=$2&pagename=$1&vars=$3

但是,mod_rewrite 的东西不是我的强项,所以我不知道如何修复它。

有什么想法吗?

最佳答案

添加 ? 使得 Rewrite 不会将查询字符串添加到 url。

所以这应该有效:

Redirect 301 /oldpage/36/ /new-page/47/?

作为预防措施,您还可以将其添加到以下内容的末尾:

RewriteRule ([^.]+)/([0-9]+)/$ index.php?pid=$2&pagename=$1?
RewriteRule ([^.]+)/([0-9]+)/([^.]+) index.php?pid=$2&pagename=$1&vars=$3?

但只有在需要的时候

关于php - 重定向 301/重写难题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6385416/

相关文章:

php - php发送的电子邮件中的Message-Id有什么问题

php - Windows 上 filemtime() 的已知问题 - 文件被任意触摸?

wordpress - 基于浏览器 SNI 支持的重定向

php - 什么重定向代码可以解决我重复的主页?

php - 加载 index.php 时的空 css 文件

php - 如何将方法的结果添加到来自 Php 数组的 SQL 结果 - JSON

php - 从外部 url 获取 div 内容 - 最佳方法 - PHP? DOM?查询?

apache - Debian 10 上的 Awstats - 访问次数太少 - 修复它的选项

linux - 如何在同一台服务器上混合使用基于 IP 和名称的虚拟主机?

apache - 将所有 HTTP 请求(非 www 和 www,子域)重定向到 HTTPS