我正在寻找一种通过.htaccess删除文件扩展名的方法。例如,我希望将http://example.com/blog.php
重写为http://example.com/blog
。但我只想删除blog.php的扩展名,而不是任何其他文件。
我试过了......
RewriteRule ^blog$ blog.php [L]
但它可以加载http://example.com/blog
和http://example.com/blog.php
。它不会重写URL。 \
我主要想要这样做,所以我不必查看我的所有代码,将所有链接更改为http://example.com/blog.php
到http://example.com/blog
答案 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