0

我希望使用如下查询参数重写和 301 重定向 URL:-

domain.com/link.asp?StockNo=601-0287

如下所示:-

domain.com/Product-Name

许多 URL 的库存编号会有所不同,每个 URL 的产品名称也会有所不同。

没有太多的 URL 可以这样做,因此手动编写不会成为问题...

像下面这样的东西不起作用:-

RewriteRule ^link.asp/?StockNo=601-0287$ /Product-Name/$1 [R=301,L]

但这将是一种期望的规则。

处理这些重写的最佳方法是什么?

需要 RewriteCond 吗?我假设不需要 {QUERY_STRING} 因为产品名称与查询字符串不匹配?

提前致谢。

4

1 回答 1

1

要将 REQUEST_URI 和 QUERY_STRING 匹配在一起,您需要使用%{THE_REQUEST}

通过启用 mod_rewrite 和 .htaccess httpd.conf,然后将此代码放在您.htaccessDOCUMENT_ROOT目录下:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+link\.asp\?StockNo=[^\s]+ [NC]
RewriteRule ^ /Product-Name/? [R=302,L]

编辑:要处理特定的股票编号:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+link\.asp\?StockNo=601-0287 [NC]
RewriteRule ^ /Product-A/? [R=302,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+link\.asp\?StockNo=601-0293 [NC]
RewriteRule ^ /Product-B/? [R=302,L]

如果您有太多这些股票需要重写,那么我强烈建议您使用 RewriteMap。有关更多详细信息,请参阅此答案:使用 PHP 编辑 .htaccess

于 2013-05-29T15:24:53.310 回答