首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mod_rewrite:如何禁用重写规则的not clean导航

mod_rewrite:如何禁用重写规则的not clean导航
EN

Stack Overflow用户
提问于 2012-09-10 18:19:57
回答 2查看 152关注 0票数 0

我已经启用了mod_rewrite模块,一切正常。

我为url创建了简单的规则,但是如何使用参数禁用(重写) url导航?

示例:

代码语言:javascript
运行
复制
# rewrite rule for cleaning
RewriteRule ^bookstore/([0-9]+)?$ /bookstore/book.php?id=$1 [L]

现在,如果我导航到http://mydomine.com/bookstore/123,一切都完成了,但是url http://mydomine.com/bookstore/book.php?id=123也是可导航的。

我如何才能使第一个可见和可伸缩?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-10 19:14:49

将此代码添加到相同的htaccess文件中:

代码语言:javascript
运行
复制
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /bookstore/book\.php\?id=([0-9]*)
RewriteRule ^bookstore/book\.php$ /bookstore/%1? [L,R=301]

这将301将对具有查询字符串的URI的请求重定向到没有查询字符串的URI。

票数 0
EN

Stack Overflow用户

发布于 2012-09-10 19:09:24

这一点不是百分之百确定,但我认为如果您将A重写为B,那么A和B都可以工作。

我想问一下,为什么也可以导航是个问题?如果该链接也是有效的,并且用户可以同时使用这两个链接,那么问题是什么呢?尽管他们需要一些时间和运气才能发现第二种选择。他们这样做会有什么好处?你会失去什么?如果两种情况下的答案都是“什么都不是”,那么就别担心了。:)如果您以前使用旧链接,现在用新链接替换旧链接,那么客户的旧书签仍然有效是一件好事。

但是假设您有一个很好的理由禁用旧的URL,那么将它们都更改如何。例如,将"book.php“重命名为"xyz.php”,然后将http://mydomine.com/bookstore/123重定向到http://mydomine.com/bookstore/xyz.php?id=123 --旧的http://mydomine.com/bookstore/book.php?id=123将停止工作。

好吧,这是一个丑陋的解决方案,但如果不重命名文件,只需将它们移动到一个子目录,如http://mydomine.com/xyz/bookstore/book.php?id=123,则可以使其更好。或者,您可以使用重定向添加一个"secret“参数,然后在PHP文件中检查它,例如将http://mydomine.com/bookstore/123重写为http://mydomine.com/bookstore/book.php?id=123&secret=xyz。当然,这只是一种“默默无闻的安全”,但再说一遍...通过发现你的真实URL,任何人到底能得到什么?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12349664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档