首页 > 解决方案 > 从 SEO 友好的 URL 中删除 id/变量

问题描述

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

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

例如将其重写为:

shop/product/product-name/12

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

标签: .htaccessurlmod-rewriteseofriendly-url

解决方案


您能否尝试使用显示的示例进行以下、编写和测试。请确保在测试 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]

推荐阅读