.htaccess - 将URL部分更改为参数并忽略其余部分

时间:2013-06-18 08:40:01

标签: wordpress .htaccess

我正在为网站进行SEO优化,我需要将网址的一部分转换为参数。如果需要,仍然可以更改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

2 个答案:

答案 0 :(得分:1)

在常规wordpress .htaccess:

RewriteBase行下方试用此规则
RewriteRule ^watch/([^-]+)- watch/?pid=$1 [L,QSA,NC]

答案 1 :(得分:0)

更新:更改解决方案以说明产品ID包含两个字母,然后是数字。

您执行以下操作:

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

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

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

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

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

如果产品ID可能是不是 -的任何字符,那么以下内容应达到相同的效果:

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