【问题标题】:Prevent users browsing the website with the old URL after rewriting防止用户在重写后使用旧 URL 浏览网站
【发布时间】:2017-12-26 14:47:08
【问题描述】:

我是 .htaccess 的新手,我正在尝试制作友好的 URL(或漂亮的、对 SEO 友好的 URL)。我在 .htaccess 上做了以下事情:

- 删除所有文件上的 .php 扩展名。
- 重写产品详情页面如下:

RewriteRule ^product-details/([a-zA-z0-9_-]+)/([0-9]+)$ product-details.php?title=$1&id=$2 [L]

但是,当我转到 URL 栏并键入带有 .php 扩展名的文件名时,它仍然有效。我希望它将用户重定向到 404.php 页面。此外,在产品详细信息页面中,我输入旧的 URL 格式,它也可以工作。

插图:

index => index.php (Works)
product-details/chair/1205 => product-details.php?title=chair&id=1205 (Works)
如何防止这种情况?我应该使用 PHP 还是 .htaccess?如果是这样,.htaccess 解决方案是什么?非常感谢!

【问题讨论】:

  • 您可以简单地将旧 URL 重定向到 PHP 本身的新 URL?为什么要将它们发送到 404?
  • @AmitGupta 因为我想严格隐藏 .php 扩展名和格式
  • 是的,当您将旧页面重定向到新页面时,不会出现 URL 扩展
  • 表示 product-details.php?title=chair&id=1205 到 product-details/chair/1205
  • @AmitGupta 不,但他们会知道他们输入了正确的 URL

标签: php .htaccess url mod-rewrite


【解决方案1】:

RewriteRule 之后,旧 URL 将自动重定向到新 URL。就像如果用户打开product-details.php?title=chair&id=1205,他会自动重定向到product-details/chair/1205

即使有人试图打开它们,旧的 .php 扩展 URL 也将永远无法工作。

我不建议将旧 URL 发送到 404 page,因为这会给用户留下错误的印象,对 SEO 不利。

【讨论】:

  • 我在XAMPP localhost上试过了,但还是显示index.php等
  • 你为 index.php 添加了什么 RewriteRule?
  • RewriteRule ^([^\.]+)$ $1.php [NC] 也不适用于产品详细信息
  • 为 RewriteRule 添加重定向 301
  • 我应该把它放在哪里?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-12
  • 2020-04-11
  • 2019-02-05
  • 1970-01-01
  • 2021-09-14
相关资源
最近更新 更多