为特定文件重写URL


Rewrite URL for specific file

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

I tried this…

RewriteRule ^blog$ blog.php [L]

但是它允许http://example.com/bloghttp://example.com/blog.php加载。它不会重写URL。'

我主要是想这样做这样我就不用遍历所有的代码,把所有链接到http://example.com/blog.phphttp://example.com/blog

它不重写URL。

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

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

这对我有用:

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

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