【问题标题】:What to do with dynamic url after rewrite?重写后动态url怎么办?
【发布时间】:2025-11-22 06:05:01
【问题描述】:

在您成功创建 url 重写后,您将如何处理访问页面的原始方式和其他可能的方式。这当然是为了防止重复内容。例如,如果我有这个:

RewriteEngine on
RewriteBase /
RewriteRule ^blog/(\d+)/([\w\-/\.]+)/?$ blog.php?id=$1&article_title=$2 [L]

我可以通过 url 访问页面

https://www.mysite.com/blog/10/mysite.com(mysite.com 是文章标题)

问题是我也可以通过访问该网站来访问

https://www.mysite.com/blog.php?id=10article_title=sitetitle

https://www.mysite.com/blog.php?id=10

等等。

您应该如何处理这些特定的网址。

我还应该将 blog.php?id=10 更改为重写的 url 吗?我可以依靠别的东西,现在就开始使用完全重写的 url 吗?该网站是新网站。

【问题讨论】:

    标签: .htaccess rewrite


    【解决方案1】:

    对于我的网站,我有从重写内部调用的脚本检测它们从中获取的 URI(使用至少 Apache 设置的“REQUEST_URI”变量),如果他们得到,则重定向到规范的用内部调用(输出 301 方向)。

    【讨论】:

    • 我不确定你的意思。这是一种笼统的方法,所以我不必手动 301 每个单独的网址吗?你如何做到这一点?
    • 你指的是查询字符串吗?
    • 我检查了 REQUEST_URI 变量(Apace 设置的)的值。如果它包含“?variable=parameter”,我让脚本响应一个 301 状态代码,指向我想要显示的 URL。