Apache .htacces重写规则以删除.php文件扩展名

标题解释了基本知识,现在,问题来了:

我有很多这样的文件:

<?php include 'mynavbar.php'; include 'myheader.php'; include 'myfirstline.php'; include 'mybuttons.php'; include 'myadvert.php'; include 'myimg.php';?> 

我不能编辑所有的文件,并删除.php 。 如何在地址栏中不显示.php ,但仍可以使用.php结尾包含页面

下面的代码应该在.htaccess文件中为你隐藏.php扩展名:

 Options +FollowSymlinks -MultiViews RewriteEngine on # to make `/path/index.php` to /path/ RewriteCond %{THE_REQUEST} ^GET\s(.*/)index\.php [NC] RewriteRule . %1 [NE,R=301,L] RewriteCond %{THE_REQUEST} ^GET\s.+\.php [NC] RewriteRule ^(.+)\.php$ /$1 [NE,R=301,L,NC] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{DOCUMENT_ROOT}/$1.php -f RewriteRule ^(.*?)/?$ $1.php [L] 

还要记住,这些规则将不会影响你的PHP包括例如: include 'myheader.php';

这是因为这些包括由php本身处理,不通过Apache。

下面的RewriteRules将假定任何没有匹配的文件的PHP扩展。 它应该在你的.htaccess文件的RewriteRules的底部。

 # Force PHP extension if not a directory RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d RewriteRule ^(.*)$ - [L] RewriteCond %{DOCUMENT_ROOT}/$1.php -f RewriteRule ^((.*/)*[^./]+)/*$ $1.php [L] 

这是为了URL重写。 至于include语句,您仍然需要PHP扩展,因为这些是物理文件路径。 如果你需要这样的东西,你应该看看符号链接。

你没有采取正确的道路来解决你试图解决的问题。

如果我理解的很好,你想要做的是有一个像这样的网址:

 http://example.com/my/url 

而不是(例如):

 http://example.com/my/url.php 

如果是这种情况,你应该寻找的是重写网址