将article.php?id = 1的RewriteRule改为打印机名称

时间:2017-07-18 14:26:23

标签: php apache .htaccess mod-rewrite

所以我们最近有一个客户的网站正在为我们的客户开发定制,他们基本上有非友好的URL“article.php?id = 1”。我正在努力使他们对SEO友好,而在创建新网址时,我无法让他们的旧网址自动重定向到我刚创建的网址。

我试过以下但没有运气:

RewriteEngine On
RewriteBase /

RewriteRule ^articulo.php?id=1$ "xerox-phaser-3020bi" [NC,R=301,L]
RewriteRule ^xerox-phaser-3260dni$ /articulo.php?id=2 [R=301,L]
RewriteRule ^xerox-phaser-33dn$ articulo.php?id=3 [L]

正如您所注意到我手动创建每个产品的URL(仅约38个),并且因为应用程序不打印category.php?name = nameofcategory& article.php?id = 1我认为这将是最好的方式做友好的URL。

我想要的是当有人在我们的网站点击/article.php?id=1产品时,他们会被带到友好的网址,例如:/ xerox-phaser-3260dni

谢谢!

修改:

RewriteEngine On

RewriteCond %{QUERY_STRING} ^id=1$ 
RewriteRule ^articulo\.php$ /xerox-phaser-3260dni/? [R=301,L]

此代码重定向,但在访问友好网址时不显示该页面。

1 个答案:

答案 0 :(得分:2)

您的方法不起作用,因为您的网址包含?等符号。您需要使用{QUERY_STRING}

尝试以下方法:

RewriteCond %{QUERY_STRING} article.php?id=1$ 
RewriteRule (.*) /xerox-phaser-3260dni/? [R=301,L]

不要忘记在重定向的URL末尾添加?,因为查询字符串不会出现在URL的末尾。

确保在测试之前清除缓存。