从一个静态 URL 重定向或重写到另一个静态 URL
Posted
技术标签:
【中文标题】从一个静态 URL 重定向或重写到另一个静态 URL【英文标题】:Redirect or rewrite from one static URL to another static URL 【发布时间】:2018-06-27 02:49:57 【问题描述】:我想将一个静态 URL 重定向到另一个静态 URL,但做不到。
我要重定向的网址:
http://www.eyecatchers.co/blogdetail.php?id=24%2FWHY-YOUR-WEBSITE-IS-THE-NERVE-CENTER-OF-YOUR-ONLINE-MARKETING-%E2%80%93-AN-EYECATCHERS%E2%80%99-TAKE%E2%80%A6..%2F
到这里:
http://www.eyecatchers.co/blog/WHY-YOUR-WEBSITE-IS-THE-NERVE-CENTER-OF-YOUR-ONLINE-MARKETING-AN-EYECATCHERS-TAKE
我曾尝试使用301
重定向,但无能为力。也试过这个:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^blogdetail.php?id=24%2FWHY-YOUR-WEBSITE-IS-THE-NERVE-CENTER-OF-YOUR-ONLINE-MARKETING-%E2%80%93-AN-EYECATCHERS%E2%80%99-TAKE%E2%80%A6..%2F http://www.eyecatchers.co/blog/WHY-YOUR-WEBSITE-IS-THE-NERVE-CENTER-OF-YOUR-ONLINE-MARKETING-AN-EYECATCHERS-TAKE [R=301,L]
这也不起作用。
【问题讨论】:
【参考方案1】:?
之后的 URL 部分代表一个查询字符串。在 RewriteRule 的模式中,您无法匹配 Query string
。您需要匹配%QUERY_STRING
或使用THE_REQUEST
变量的完整请求标头。
RewriteEngine on
RewriteCond %THE_REQUEST /blogdetail.php\?id=.+WHY-YOUR-WEBSITE-IS-THE-NERVE-CENTER-OF-YOUR-ONLINE-MARKETING.+ [NC]
RewriteRule ^ http://www.eyecatchers.co/blog/WHY-YOUR-WEBSITE-IS-THE-NERVE-CENTER-OF-YOUR-ONLINE-MARKETING-AN-EYECATCHERS-TAKE? [R=301,L]
【讨论】:
对不起,它不起作用,它给了我 500 内部服务器错误 为避免混淆,我将所有特殊的 uri 字符替换为.+
。请尝试更新后的规则。
对不起,这也不起作用,给我同样的 500 服务器错误
抱歉,有一个小错误。【参考方案2】:
试试:
RewriteEngine on
RewriteCond %THE_REQUEST /blogdetail.php\?id=([^\s]+) [NC]
RewriteRule ^ /blog/%1? [R=301,NC,L,R]
这将处理所有此类链接,即 /blogdetail.php?id= 将被简单地替换为 /blog/
【讨论】:
您的规则会将http: //www.eyecatchers.co/blogdetail.php?id=24%2FWHY-YOUR-WEBSITE-IS-THE-NERVE-CENTER-OF-YOUR-ONLINE-MARKETING-%E2%80%93-AN-EYECATCHERS%E2%80%99-TAKE%E2%80%A6..%2F
重定向到http: //www.eyecatchers.co/blog/24%2FWHY-YOUR-WEBSITE-IS-THE-NERVE-CENTER-OF-YOUR-ONLINE-MARKETING-%E2%80%93-AN-EYECATCHERS%E2%80%99-TAKE%E2%80%A6..%2F
哦,我还以为是FROM链接里有些字符,错了,我的错!
感谢您的回复。但现在的问题是 /blogdetail.php?id= 将被简单地替换为 /blog/ ,如何从该链接中删除 24%2F 应该是 eyecatchers.co/blog/…
是的,请参考@starkeen 的***.com/a/48314516/945214。我的解决方案适用于所有普通 URL,并且是通用的。以上是关于从一个静态 URL 重定向或重写到另一个静态 URL的主要内容,如果未能解决你的问题,请参考以下文章
什么是伪静态,url 重写是截取传入web 请求并自动将请求重定向到其他 url