如何使用.htaccess隐藏.php网址扩展?

Mar*_*kum 16 php regex apache .htaccess mod-rewrite

我想在我的.htaccess文件中添加一些内容来隐藏.php我的php文件的文件扩展名,所以访问www.example.com/dir/somepage会向他们展示www.example.com/dir/somepage.php.

这有什么工作解决方案吗?我的网站使用HTTPS,如果这很重要的话.

这是我目前的.htaccess:

RewriteEngine On

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

ErrorDocument 404 /error/404.php

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]
Run Code Online (Sandbox Code Playgroud)

anu*_*ava 42

在DOCUMENT_ROOT下的.htaccess中使用此代码:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f [NC]
RewriteRule ^ %{REQUEST_URI}.php [L]
Run Code Online (Sandbox Code Playgroud)

  • @Arios:在第一个重定向规则中添加 `RewriteCond %{REQUEST_METHOD} !POST` 条件以避免 POST 请求被重定向。 (4认同)
  • 你怎么能排除页面?这似乎干扰了我的登录脚本,所以我想从这些重写中排除该页面 (2认同)

sta*_*een 5

删除php扩展

您可以使用 /.htaccess 中的代码:

RewriteEngine on


RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_FILENAME}.php [NC,L]
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,您将能够以 /file 的形式访问 /file.php

删除 html 扩展

RewriteEngine on


RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_FILENAME}.html [NC,L]
Run Code Online (Sandbox Code Playgroud)

注意:'RewriteEngine on' 指令应该在每个 htaccess 的顶部使用一次,所以如果你想组合这两条规则,只需从第二条规则中删除该行。您还可以删除您选择的任何其他扩展名,只需在代码中用它们替换 .php 即可。

访问愉快!