Apache Htaccess-如何删除url上最后一个斜杠后没有查询字符串的路径
我想删除url上最后一个斜杠后没有查询字符串的路径 例如,有一个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.
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