我已经启用了mod_rewrite模块,一切正常。
我为url创建了简单的规则,但是如何使用参数禁用(重写) url导航?
示例:
# 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也是可导航的。
我如何才能使第一个可见和可伸缩?
发布于 2012-09-10 19:14:49
将此代码添加到相同的htaccess文件中:
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。
发布于 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,任何人到底能得到什么?
https://stackoverflow.com/questions/12349664
复制相似问题