重写特定文件的URL

时间:2014-06-27 00:26:40

标签: php .htaccess mod-rewrite

我正在寻找一种通过.htaccess删除文件扩展名的方法。例如,我希望将http://example.com/blog.php重写为http://example.com/blog。但我只想删除blog.php的扩展名,而不是任何其他文件。

我试过了......

RewriteRule ^blog$ blog.php [L]

但它可以加载http://example.com/bloghttp://example.com/blog.php。它不会重写URL。 \

我主要想要这样做,所以我不必查看我的所有代码,将所有链接更改为http://example.com/blog.phphttp://example.com/blog

2 个答案:

答案 0 :(得分:1)

  

它不会重写网址。

重写在服务器内部发生。您的规则会将请求URI从/blog重写为/blog.php。它根本不与浏览器进行交互。您要求的是外部重定向。您希望mod_rewrite返回重定向到浏览器并让浏览器发送完整的不同请求。这可以使用:

完成
RewriteCond %{THE_REQUEST} \ /+blog\.php
RewriteRule ^ /blog [L,R=301]

答案 1 :(得分:0)

这对我有用:

RewriteCond %{REQUEST_URI} blog
RewriteRule ^(.*)$ blog.php [R=301,L]

基本上,如果有人使用网址<yoursite>/blog访问您的网站,.htaccess会将其重写为<yoursite>/blog.php