Php 重写特定文件的URL
我正在寻找通过.htaccess删除文件扩展名的方法。例如,我想要Php 重写特定文件的URL,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我正在寻找通过.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
。但是我只想删除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
它不会重写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
/blog
访问您的站点,则.htaccess会将其重写为/blog.php
RewriteCond^blog.php-f RewriteRule.*\。php$blog.php[L,QSA]
可能吗?这会导致500个内部服务器错误。没有任何帮助。我正在寻找一种方法,可以在调用example.com/blog.php
时将URL重写为example.com/blog.php
。设置一个.htaccess 301重定向,从blog.php
重定向到/blog
,然后呢?酷!这成功了!现在,有没有一种方法可以对一组.php文件执行此操作,而只需更改一两行代码?注意:我不想对所有的.php文件都这样做,只有少数。@Locke将/+blog\.php
更改为/+([^\?\])\.php
,将规则中的/blog
更改为%
。