Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重写特定文件的URL_Php_.htaccess_Mod Rewrite - Fatal编程技术网

Php 重写特定文件的URL

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\ 我主要想这样做,这样我就不必浏览所有代码,将所

我正在寻找通过.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

它不会重写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
更改为
%