隐藏php扩展而不删除实际文件中的.php

这是使用 htacess 隐藏 php 扩展的最常用方法,但这仅在实际文件没有扩展名时才有效,例如index.php必须将文件更改为indexthis 在开发模式下不适合,现在有办法隐藏扩展名并仍然保持文件名完整?


  # Run Php without filename extension

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME}.php -f

RewriteRule ^(.*)$ $1.php


# Return 404 if original request is .php

RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.php[? ].*$"

RewriteRule .* - [L,R=404]

这是我的文件结构


我的网站 [根文件夹]

索引.php

关于.php

视图文件夹[根目录内]

索引.php

关于.php


子衿沉夜
浏览 93回答 1
1回答

catspeake

您发布的方法完全符合您的要求。您在文件系统上有一个“index.php”文件,您的 URL 类似于“www.mysite.com/index”(URL 中没有 .php 扩展名)。RewriteEngine on# The requested filename "/index" is not a directoryRewriteCond %{REQUEST_FILENAME} !-d# There is a file on the file system named as the request, with extension .phpRewriteCond %{REQUEST_FILENAME}.php -f# If all of the above is true, pretend that the ".php" file had been called# by rewriting the request appending .phpRewriteRule ^(.*)$ $1.php您不需要将“index.php”重命名为“index”。如果您还想在指定 .php 时阻止访问,请将此规则放在上面的规则之前。现在,“mysite/index”可以工作,“mysite/index.php”不会。# Return 404 if original request is .phpRewriteCond %{REQUEST_FILENAME} "\.php$"RewriteRule .* - [L,R=404]请注意,还有其他几种方式可能会让人意识到您的网站使用 PHP,而 php-to-404 规则没有多大意义。
打开App,查看更多内容
随时随地看视频慕课网APP