我正在为一个网站工作,这是在php ...我想重写网址
e.g www.3idiots.co.in/stories.php?id=17
如果我想将其重写为
www.3idiots.co.in/stories/17.html
任何人都可以告诉我用.htaccess文件写的代码。?
答案 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]