标题解释了基本知识,现在,问题来了:
我有很多这样的文件:
<?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
如果是这种情况,你应该寻找的是重写网址