2017-05-05 157 views
0

什么是将 product.php?product=[variable-id]重定向到item/[variable-id]的最佳方法。Mod重写URL

例如:product.php?product=45item/45

我想是这样的:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/product\.php$ 
RewriteCond %{QUERY_STRING} ^product=([0-9]*)$ 
RewriteRule ^(.*)$ http://example.com/item/%1.php [L,R=301] 

但是这不工作...

+0

你使用框架或程序化的PHP方法吗? – Demonyowh

+0

使用'header('Location:https://www.example.com/blahblah/'。$ variable);' –

+0

没有框架。是的,我正在使用程序化的PHP方法。 –

回答

1

将这个代码在根目录下的.htaccess文件。

RewriteEngine On 
RewriteCond %{THE_REQUEST} ^GET\ /product\.php\?product=([^\s&]+) [NC] 
RewriteRule ^product\.php$ /item/%1? [R,L] 
RewriteRule ^item/([^/]+)?$ /product.php?product=$1 [NC,L] 

如果一切正常,因为它应该,你可以替换RR=301(永久性重定向)。

1

这是“最好的办法[*]重定向到product.php?product=[variable-id]item/[variable-id],其中product总是第一个URL参数,[variable-id]必须存在,且只由数字0-9。

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^product=(\d+) 
RewriteRule ^product\.php$ /item/%1 [R=302,L] 

如果这个旨在然后永久重定向改变302(临时)于301(永久),只有当你确认一切工作正常。 301s被浏览器强制缓存,因此在测试之前清除浏览器缓存。

[*]可辩论 - 基于问题中有限的信息。