Apache Htaccess-如何删除url上最后一个斜杠后没有查询字符串的路径

Apache Htaccess-如何删除url上最后一个斜杠后没有查询字符串的路径,apache,redirect,Apache,Redirect,我想删除url上最后一个斜杠后没有查询字符串的路径 例如,有一个url: https://www.example.com/example.php/fakepath/fakepath2/fakepath3?id=123 我想在.htaccess文件中添加重写规则,并将源url重定向到此url: https://www.example.com/example.php?id=123 因为我发现了这个问题: 这是一个正确的url: 如果我在index.php之后添加斜杠,url将是 如果我在index.

我想删除url上最后一个斜杠后没有查询字符串的路径

例如,有一个url:
https://www.example.com/example.php/fakepath/fakepath2/fakepath3?id=123

我想在
.htaccess
文件中添加重写规则,并将源url重定向到此url:
https://www.example.com/example.php?id=123

因为我发现了这个问题:

这是一个正确的url:

如果我在
index.php
之后添加斜杠,url将是

如果我在
index.php
之后添加假路径:

这些网址可以访问后,我添加了假路径

所以,我需要一个重写规则来将它们重定向到正确的url

你对这个案子有什么想法吗

非常感谢。

请尝试:

RewriteEngine On
RewriteRule ^example.php example.php/fakepath/fakepath2/fakepath3
最新答案 这里有一条来自
mod\u alias
的规则,它应该从
.php
文件中删除任何
路径信息。这将执行您要执行的重定向

# .htaccess
RedirectMatch permanent "^(.*\.php)/.*" "$1"

旧答覆如下 你当然不需要为这个修改
mod\u rewrite
。相反,启用,例如

然后,对
/example.php/fakepath/fakepath2/fakepath3?id=123的请求将通过

var_dump($_GET);
var_dump($_SERVER['PATH_INFO']);
生产

array(1) {
  ["id"]=>
  int(123)
}
string(19) "/fakepath/fakepath2/fakepath3"

或者,如果您不想支持带有
PATH\u INFO
的URL,可以使用

# .htaccess
AcceptPathInfo Off

然后对包含路径信息的URL的请求将导致404。

Phil,感谢您的耐心等待。但这个解决方案不是我想要的。我想要一个重写规则,重定向
https://www.example.com/example.php/fakepath/fakepath2/fakepath3?id=123
https://www.example.com/example.php?id=123
再次感谢!我不知道你在说什么。您想要URL重写还是重定向?前者对用户不可见,后者要求用户客户端访问不同的URLPhil,是的,我希望重定向
http://www.example.com/xxx.php/fakepath/fakepath?id=123
http://www.example.com/xxx.php?id=123
在PHP或Apache服务器中,如果最终用户访问
http://www.example.com/xxx.php/fakepath/fakepath?id=123
,他将从
http://www.example.com/xxx.php?id=123
,所以我想将用户重定向到正确的位置url@evenloooo这些URL来自哪里?搜索引擎只会跟进links@evenloooo我已经用重定向解决方案更新了我的答案。同样,您不需要修改
mod_rewrite
“在我添加假路径后,可以访问这些url”
# .htaccess
AcceptPathInfo Off