【发布时间】:2021-01-11 09:50:42
【问题描述】:
我在我的网站上使用了这个友好的网址:
https://myexample.com/post/10/post-title
我正在尝试做一些拒绝用户直接访问参数值的事情。例如,如果用户尝试在上面的 url 中放置另一个 id,htaccess 会将他重定向到 404 页面。
下面是我的 htaccess 代码,它将我的 url 获取参数转换为友好的 url,并且像一个魅力一样工作:
RewriteEngine On
RewriteRule ^post/([^/]*)/([^/]*)$ /news?id=$1&title=$2 [L]
在这种情况下,我该如何改进我的 htaccess 来做到这一点?
感谢任何帮助。
【问题讨论】:
-
在这个级别上,无法检查 ID
10是否存在,或者是否属于带有 slugpost-title的帖子。你应该在你的脚本中处理这个,这会产生实际的数据库请求(?)。 -
感谢您的反馈@04FS。知道了。实际上,当我尝试在 url 中清空 id 参数时,我得到 500 内部服务器错误,即使我有 GET 规则来重定向,如果 id 为空。如果某些参数不存在或 GET 值发生更改,我将尝试在 php 中实现一些规则以重定向到 404 页面。
-
仅供参考,外部重定向到 404 文档是错误的做法。所有依赖状态代码信息的客户端(例如搜索引擎机器人),将无法再将 404 状态代码与最初请求的 URL 相关联 - 因为您重定向到其他地方,并且只有然后第二个请求得到了 404 响应。如果您确定您的 PHP 脚本中有“404 案例”,那么该脚本应该直接以 404 响应,不重定向到不同的 404 文档 URL。
-
我明白了。但在这种情况下,如果我想在 url 不正确的情况下重定向用户?例如,如果我尝试编辑或尝试删除此问题页面的此参数 /64057693/,SO 会给我一个 Page not found。在这种情况下,这与我的疑问有关吗?
-
“如果我尝试编辑或尝试删除此问题页面的此参数 /64057693/,SO 将给我一个未找到的页面。” - 那就是适当的回应,不是吗?
标签: php .htaccess friendly-url