我正在寻找一种通过.htaccess删除文件扩展名的方法。例如,我想把http://example.com/blog.php
写成http://example.com/blog
。但我只希望blog.php的扩展名被删除,而不是任何其他文件。
I tried this…
RewriteRule ^blog$ blog.php [L]
但是它允许http://example.com/blog
和http://example.com/blog.php
加载。它不会重写URL。'
我主要是想这样做这样我就不用遍历所有的代码,把所有链接到http://example.com/blog.php
到http://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