Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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
使用.htaccess删除.php并重定向到其非.php版本_Php_Apache_.htaccess_Browser - Fatal编程技术网

使用.htaccess删除.php并重定向到其非.php版本

使用.htaccess删除.php并重定向到其非.php版本,php,apache,.htaccess,browser,Php,Apache,.htaccess,Browser,我有一个网站,我需要删除每个文件的.php扩展名,然后将指向任何包含.php扩展名的文件的链接重定向到同一个文件,但没有.php扩展名 我找到了以下代码。这非常有用,但文件夹中包含的任何内容都将重定向到根目录,如本例所示: 重定向到 (不带.php) 代码如下: 重新启动发动机 #Remove .php extension RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRu

我有一个网站,我需要删除每个文件的.php扩展名,然后将指向任何包含.php扩展名的文件的链接重定向到同一个文件,但没有.php扩展名

我找到了以下代码。这非常有用,但文件夹中包含的任何内容都将重定向到根目录,如本例所示:

重定向到

(不带.php)


代码如下:

重新启动发动机

#Remove .php extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]

#Redirect without .php
RewriteCond %{THE_REQUEST} \.php
RewriteRule ^(.*)\.php$ /$1 [R=301,L]

有什么问题吗?

用此规则替换您的规则,然后在新浏览器中重新测试,或者完全清除浏览器缓存:

RewriteEngine On

# To externally redirect /dir/file.php to /dir/file
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,NE,L]

## To internally rewrite /dir/file to /dir/file.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

这是
文件夹/
目录中的.htaccess吗?不,不是。我只把它放在根目录中。我应该把它复制到每个文件夹吗?现在文件夹中的所有内容都重定向到主页,没有任何文件名。也不起作用。这些规则正在我的live网站上运行,以删除
.php
扩展,因此规则没有问题。当然,.php删除工作正常。但对于文件夹中的任何文件,当我单击指向它的链接时,它会将我重定向到主页。指向example.com/folder/file.php的链接使我进入example.com
指向example.com/folder/file.php的链接使我进入example.com
在我建议的这两条规则中肯定不会发生。您的.htaccess中还有其他规则吗?还要测试Apache服务器端配置中是否有任何其他.htaccess或规则。还要检查您的Apache版本。