.htaccess url重写 - 删除.php删除www。将?id = 10转换为/ 10

时间:2011-08-06 00:42:46

标签: apache .htaccess mod-rewrite url-rewriting

正如标题所说,我需要一个非常复杂的网址应用重写机制作为.htaccess规则。 我现在搜索了很多,并尝试了数百种不同的重写规则。

所以,基本上这就是我所需要的:
用户访问: http://www.site.com/product.php?id=12
服务器应重定向到: http://site.com/product/12

有一点需要提及:
并非所有页面都附加了ID 所以我也有: http://www.site.com/some/page.php
然后应重定向到: http://site.com/some/page

或从 http://site.com/anotherone.php http://site.com/anotherone

非常感谢您的帮助,并提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)\.php$ http://%1/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)\.php\?id=([0-9]+)$ http://%1/$1/$2 [R=301,L]

答案 1 :(得分:0)

我想,你以前有这个mod_rewrite规则是活跃的:

用户转到http://site.com/product/12并在浏览器中显示此网址,并且仅在内部,服务器提供http://www.site.com/product.php?id=12

放置第一个RewriteCond并规则:

   RewriteCond %{ENV:REDIRECT_STATUS} !200
   RewriteRule ^(\w+)\.php\?id=(\d*)$ /$1/$2 [R=301]

添加另一个以.php结尾时删除.php

   RewriteCond %{ENV:REDIRECT_STATUS} !200
   RewriteRule ^(\w+)\.php$ /$1 [R=301]