Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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
Regex 使用.htaccess文件删除.php文件扩展名_Regex_Apache_.htaccess_Redirect_Mod Rewrite - Fatal编程技术网

Regex 使用.htaccess文件删除.php文件扩展名

Regex 使用.htaccess文件删除.php文件扩展名,regex,apache,.htaccess,redirect,mod-rewrite,Regex,Apache,.htaccess,Redirect,Mod Rewrite,我希望www.example.com/about.php就是www.example.com/about 我创建了一个.htaccess文件,并将其放在服务器的根目录中。 我正在使用linux共享主机。PHP版本5.2 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php 看起来这段代码应该可以正常工作,但由于某些

我希望www.example.com/about.php就是www.example.com/about

我创建了一个.htaccess文件,并将其放在服务器的根目录中。 我正在使用linux共享主机。PHP版本5.2

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
看起来这段代码应该可以正常工作,但由于某些原因它不能正常工作。当我尝试导航到一个没有.php扩展名的页面时,会出现404错误

以下是我的标记:


您可以看到,我尝试在链接中使用php扩展,也尝试不使用。带有php扩展的链接将转到页面,但不要删除扩展


我做了一个测试,看看模块重写是否是通过放入一些垃圾并返回500个错误而启用的。

您的重写规则不正确,它是错误的。请尝试以下方法:

RewriteRule ^(.*).php$ /$1 [L,R=301]

所以在与谷歌进行了长时间的较量之后,我终于想出了这个办法。 这适用于Godaddy共享主机。 它删除了php文件扩展名,因此


(在上传到服务器之前删除注释)

使用此代码隐藏/删除
。php
扩展:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]

我也有这个问题,但我发现这似乎解决了GoDaddy.htaccess问题

# Fix Rewrite
Options -Multiviews

# Mod Rewrite
Options +FollowSymLinks
RewriteEngine On
RewriteBase / 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

粘贴在我的.htaccess文件中的所有内容之上对我很有用

## 301 Redirects
RewriteCond %{QUERY_STRING}  ^$
RewriteRule ^(.*)\.asp$ $1? [R=301,NE,NC,L]

谢谢你的意见,但是运气不好。仍然收到404错误。奇妙的@John SMith,这也适用于Site5托管。但我是godaddy用户,我的是无限托管,在这里不起作用。这个选项是唯一一个适用于godaddy的选项。感谢@Anubhava其他解决方案允许使用或不使用扩展来呈现页面。对于GoDaddy来说,这是唯一一个可以删除.php扩展名的解决方案,不管链接是什么。谢谢,谢谢!非常适合GoDaddy这确实是GoDaddy上唯一有效的配置!在更改主机并使用Plesk Onyx代替cPanel后,我用来隐藏
.php
扩展的代码停止工作。我不知道为什么,但您的代码已经完全解决了问题。但这不是正确的解决方案,因为它会将任何
/not found
文件重写为
/not found.php
,即使系统中不存在该php文件。如果您的主机是共享的,请尝试完成本文。我概括了这个问题,因为它似乎不是特定于godaddy或php的。
## 301 Redirects
RewriteCond %{QUERY_STRING}  ^$
RewriteRule ^(.*)\.asp$ $1? [R=301,NE,NC,L]