有没有办法用.htaccess隐藏.php文件扩展名?

时间:2013-12-31 02:17:49

标签: php .htaccess

我想知道是否有办法用.htaccess隐藏.php文件扩展名。

我见过很多网站都这样做,例如Facebook上的大多数网页都没有显示.php文件扩展名。

例如,我希望我的所有网址都是:

  

https://mywebsite.com/about

而不是

  

https://mywebsite.com/about.php

修改

在我的.htaccess文件中,我已经有以下代码:

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

我是否只是附加

RewriteEngine On
RewriteRule ^(.*)$ $1.php

在文件的末尾?或者它是如何工作的?

7 个答案:

答案 0 :(得分:3)

你必须激活rewrite_mod

和你的.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) $1.php [L]

答案 1 :(得分:3)

试试这个:

此代码目前正在我的电脑上运行。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^\.]+)$ $1.php [NC,L]
</IfModule>

它会从网址中删除扩展程序 .php 并按原样设置剩余的网址。

  • 感谢

答案 2 :(得分:1)

虽然已经回答了几次,但快速搜索会显示这样的结果:

RewriteEngine  on
RewriteRule ^(.*)$ $1.php

答案 3 :(得分:1)

将以下内容添加到.htaccess文件中(确保已启用mod_rewrite)

    RewriteEngine  on
    RewriteRule ^(.*)$ $1.php

答案 4 :(得分:1)

添加:

Options Multiviews

让mod_negotiation为您解决这个问题。

答案 5 :(得分:1)

RewriteEngine On
RewriteRule ^(.*)$ $1.php

第二行解释:

^ Start of line
(  Capture everything enclosed (start)
. Any single character
* Zero or more of any character
) Capture everything enclosed (end)
$ End of line
$1.php Get the captured match and append .php, there's the rewrite!

瞧!

hello => hello.php
home => home.php

答案 6 :(得分:0)

顺便说一句,如果您不熟悉.htaccess语法,

您可以尝试 htaccess rule generator 生成规则