Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
隐藏php扩展名而不删除实际文件中的.php_Php_.htaccess - Fatal编程技术网

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

隐藏php扩展名而不删除实际文件中的.php,php,.htaccess,Php,.htaccess,这是使用htacess隐藏php扩展名的最常用方法,但这仅在实际文件没有扩展名时有效,例如像index.php这样的文件必须更改为index这在开发模式中不适用,现在有没有办法隐藏扩展名并保持文件名不变 # Run Php without filename extension RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.*)

这是使用htacess隐藏php扩展名的最常用方法,但这仅在实际文件没有扩展名时有效,例如像
index.php
这样的文件必须更改为
index
这在开发模式中不适用,现在有没有办法隐藏扩展名并保持文件名不变

  # 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]
这是我的文件结构

我的网站[根文件夹]
  • index.php
  • 关于.php
视图文件夹[在根目录中]
  • index.php
  • 关于.php

    • 您发布的方法完全符合您的要求。文件系统中有一个“index.php”文件,URL类似于“www.mysite.com/index”(URL中没有.php扩展名)

      您不需要将“index.php”重命名为“index”

      如果希望在指定.php时阻止访问,请将此规则置于上述规则之前。现在,“mysite/index”将起作用,“mysite/index.php”将不起作用

      # Return 404 if original request is .php
      RewriteCond %{REQUEST_FILENAME} "\.php$"
      RewriteRule .* - [L,R=404]
      

      请注意,有人可能会通过其他几种方式意识到您的站点使用PHP,而PHP-to-404规则没有多大意义。

      这应该是您的答案,答案是您有两种方法可以做到这一点!1.Way是htaccess文件,2.Way是ISS。我想没有别的办法了。我甚至不会尝试打开一个没有扩展名的文件,任何安全程序都会将该文件视为恶意软件和危险文件。我不明白你为什么想要一个没有扩展名的文件。Apache将不知道如何读取没有扩展名的文件,并将尝试将文件作为未知文件下载,防火墙将阻止文件并警告pc用户。所以,htaccess文件告诉Apache您的文件是一个.php文件,但扩展名是隐藏的,Apache将文件读取为一个.php文件,php.net是说隐藏您的php扩展名,而不是说删除它们。你一定是误会了。无意冒犯,但你得自己想想。。。隐藏*.html扩展是完全相同的,但您只需在html之外隐藏*.php。堆栈溢出是为了帮助您编写代码,我们不是代码编写服务。如果@lSerni没有解释,我想我不会得到任何帮助。你所做的是结束这个问题,你不明白我想要一个更好的解释我的代码。不过我得到了帮助,这是最重要的事情。好吧,我现在明白了
      # Return 404 if original request is .php
      RewriteCond %{REQUEST_FILENAME} "\.php$"
      RewriteRule .* - [L,R=404]