【问题标题】:Removing id/variable from SEO friendly URL从 SEO 友好的 URL 中删除 id/变量
【发布时间】:2021-04-07 20:12:53
【问题描述】:

我正在尝试重写一个 URL,使其对 SEO 友好并且不包括产品 ID。目前我在我的 .htaccess 文件中使用它:

RewriteRule ^shop/product/([^/\.]+)/([^/\.]+)$ products.php?id=$2&name=$1 [NC,L]

例如重写为:

shop/product/product-name/12

有没有办法可以重写此 URL,使其删除或从末尾排除产品 ID?

【问题讨论】:

  • 能否请您清楚地从哪个 URL(在浏览器中)到后端中的哪个 URL 在您的问题中提供服务,以便更好地理解您的问题。
  • 您能否确认一下您的意思是否有人在浏览器中点击了shop/product/product-name/12 url,它应该被视为shop/product/product-name/,但应该从products.php 提供服务(查询字符串传递给它)?
  • 没错。当有人点击shop/product/product-name/12 时,它应该被视为shop/product/product-name/。内容在products.php 上提供,并传递一个查询字符串(它获取产品数据等)

标签: .htaccess url mod-rewrite seo friendly-url


【解决方案1】:

您能否尝试使用所示示例进行以下、编写和测试。请确保在测试 URL 之前清除浏览器缓存。

第一组规则考虑到您的 product.php 存在于根目录中,与存在 .htaccess 的路径相同。

RewriteEngine ON
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^shop/product/([^/]*)/([^/]*)/?$ /products.php?id=$2&name=$1 [NE,R=301,NC]

RewriteCond %{QUERY_STRING} !^$
RewriteCond %{THE_REQUEST} \s/products\.php\?id=[^&]*&name=[^\s]*\s [NC]
RewriteRule ^(.*)$ shop/product [R=301,QSD,NE,L]


请一次仅在您的 .htaccess 中使用上述规则或以下规则。

RewriteEngine ON
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^shop/product/([^/]*)/([^/]*)/?$ products.php?id=$2&name=$1 [NE,R=301,NC]

RewriteCond %{QUERY_STRING} !^$
RewriteCond %{THE_REQUEST} products\.php\?id=[^&]*&name=[^\s]*\s [NC]
RewriteRule ^(.*)$ shop/product [R=301,QSD,NE,L]

【讨论】:

  • 我尝试了我的 .htaccess 文件中的代码(products.php 与 .htaccess 文件一起在根目录中),但它一直试图导航到我的服务器结构的根目录:@987654323 @
  • @LHolden,您能否尝试一下我的 OR 解决方案,如果对您有帮助,请告诉我?
猜你喜欢
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 2016-03-21
  • 2015-03-09
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
相关资源
最近更新 更多