用于重写的URL重写代码

时间:2009-04-30 12:38:58

标签: php url-rewriting

我正在为一个网站工作,这是在php ...我想重写网址

e.g www.3idiots.co.in/stories.php?id=17

如果我想将其重写为

www.3idiots.co.in/stories/17.html

任何人都可以告诉我用.htaccess文件写的代码。?

2 个答案:

答案 0 :(得分:3)

我假设您正在使用带有mod_rewrite的Apache。像

这样的东西
RewriteEngine On
RewriteRule ^/stories/([0-9]+)\.html /stories.php?id=$1

应该做的伎俩。当然,您需要确保该目录中允许使用RewriteRule。有关详细信息,请参阅this wiki page

答案 1 :(得分:0)

mod_rewrite只能重写/重定向请求的URI,而不能重写HTML文档中的URI。因此,您首先要确保您的PHP应用程序正在打印正确的URI,因此/stories/17.html代替/stories.php?id=17

之后,您可以使用JoséBasilio建议的规则:

RewriteRule ^stories/([0-9]+)\.html$ stories.php?id=$1

虽然可以将/stories.php?id=17的请求从外部重定向到/stories/17.html,然后在内部重定向回/stories.php?id=17,但这并不是一种好的做法,因为这会导致两倍的请求。但这是规则:

RewriteCond %{THE_REQUEST} ^GET\ /stories\.php[?\s]
RewriteCond %{QUERY_STRING} ^(([^&]*&)*)id=([0-9]+)&*([^&].*)?$
RewriteRule ^stories\.php$ /stories/%3.html?%1%4 [L,R=301]