URL重写后限制对旧文件的访问

时间:2013-09-08 15:09:50

标签: php .htaccess redirect

我有一个用PHP开发的网站。我最近做了URL重写,工作正常。但是,我发现我的参数页面也可以访问。例如。

我转换了此网址 domainname.com/index.php?page=product&pid=5&proTitle=Samsung Galaxy

重写后看起来像这样 domainname.com/products/5/Samsung-Galaxy.html

一切正常。但是,仍可使用旧参数访问“我的网站”。我想如果旧URL中的某些人类型应该自动重定向到理想新页面,如果不是那么索引页面。 Google和MSN不应使用参数访问这些网页。任何帮助将受到高度赞赏。


感谢您的投入。这是我的问题的更多细节。

我转换了此网址 domainname.com/index.php?page=product&pid=5&proTitle=Samsung Galaxy

重写后看起来像这样 domainname.com/products/5/Samsung-Galaxy.html

代码看起来像这样。

RewriteRule ^products/(.*)/(.*).html$ index.php?page=product&pid=$1&proTitle=$2 [nc]

重写工作正常。但是,如果我尝试访问旧URL,即domainname.com/index.php?page=product&pid=5&proTitle=Samsung Galaxy,该页面仍可访问,并且最重要的是被Google和其他搜索引擎抓取。我想如果有人试图访问此URL,它应该将它们引导到Page Not Found,这也不应被任何抓取工具嗅探。

再次感谢您的时间,我希望我能尽快收到您的宝贵回复。

1 个答案:

答案 0 :(得分:0)

如果请求是针对看起来丑陋的人而制作的,那么您需要另一条将浏览器重定向到效果更好的网址的规则。例如:

# need to replace spaces with "-"
RewriteRule ^(.*)\ (.*)$ /$1-$2 [L,R=301]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?page=([^&\ ]+)&pid=([^&\ ]+)&proTitle=([^&\ ]+)
RewriteRule ^ /%1/%2/%3 [L,R=301]