使用.htaccess从URL中删除PHP文件扩展名

Cor*_*ora 5 php apache ubuntu .htaccess

我刚刚在Ubuntu 12上安装了LAMP堆栈,并且遇到了Apache的.htaccess文件的问题.我启用了重写和重定向模式,并且.htaccess文件正在运行(如果没有'www'存在,URI将重定向到'www'),但无论我尝试什么,我都无法删除文件扩展名.我<Files>没有运气就试过这个指令.我当前的文件包含以下内容:

RewriteEngine On

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

# Force www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个非常恼人的问题的任何建议?

Ben*_*Lee 3

您不使用 htaccess 来执行此操作,而是使用应用程序删除扩展名,然后使用 htaccess 将无扩展名的 URL 映射到真实文件。这条规则

# Remove file extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) $1.php [L]
Run Code Online (Sandbox Code Playgroud)

表示“如果请求的资源不作为文件存在,则查找具有.php扩展名的资源”。因此,您从应用程序中的所有链接中删除扩展名,并且此规则将使 php 文件在没有扩展名的情况下运行。您的 htaccess 按原样正常,您需要更新您的应用程序。