1

我正在为网站做 SEO 优化,我需要将部分 url 转换为参数。如果需要,仍然可以更改 URL 格式。

基本上我正在使用 Wordpress,并希望创建一个适用于所有产品的单一页面,但我需要从 URL 获取特定的产品编号。

URL 看起来像这样:

www.example.com/product/[product-id]-brand-name-and-some-other-stuff

我想将幕后的 URL(意味着 URL 不会改变)转换为:

www.example.com/product/?pid=[product-id]

我对 htaccess 没有太多经验,任何帮助将不胜感激。

这是当前 htaccess 文件的内容:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /downloads/www.bqwatches.com/

RewriteRule ^watch/([^-]+)- watch/?bqn=$1 [L,QSA,NC]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /downloads/www.bqwatches.com/index.php [L]
</IfModule>

# END WordPress
4

2 回答 2

1

RewriteBase在您的常规 wordpress .htaccess 行下方尝试此规则:

RewriteRule ^watch/([^-]+)- watch/?pid=$1 [L,QSA,NC]
于 2013-06-18T09:13:47.090 回答
0

更新:更改了解决方案,以说明产品 ID 由两个字母组成,然后是一个数字。

您执行以下操作:

RewriteRule ^product/([a-zA-Z][a-zA-Z][0-9]+).* product/?pid=$1

为了解释发生了什么,它匹配 URL 之后以 开头的部分product/,后跟两个字母和几个数字,然后是任何其他字符。字母和数字被放入pid请求的 URL 的参数中,其余的被丢弃。

如果您通过它http://www.example.com/product/af1234-some-product,它将在幕后转换为http://www.example.com/product/?pid=af1234.

通过执行以下操作,您还可以接受任意两个字符后跟一个数字:

RewriteRule ^product/(..[0-9]+).* product/?pid=$1

如果产品 id 可以是任何不是a 的字符-,那么以下应该实现相同:

RewriteRule ^product/([^-]+).* product/?pid=$1
于 2013-06-18T12:12:28.970 回答