如果我用.htaccess隐藏.php,我就无法登录我的网站


If I hide .php by .htaccess, I cannot login my web

如果我在每个页面上隐藏我的.php,我就无法登录我的网站,它不会显示任何错误,也只显示相同的登录页面。所以我想知道,我将在哪里编辑什么来登录.htaccess或loginpage?

.htaccess

RewriteEngine On
RewriteBase /
# To externally redirect /dir/file.php to /dir/file
RewriteCond %{THE_REQUEST} 's/+(.*?/)?(?:index)?(.*?)'.php['s?] [NC]
RewriteRule ^ %1%2 [R=302,L,NE]
# To internally forward /dir/file to /dir/file.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1'.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php [L]

我的登录页面:

<?php $site_root = $_SERVER['DOCUMENT_ROOT']; 
if(!class_exists('MySQLDB')== true){
require_once($site_root ."/nav_top.php");}
?>
<?
include_once("include/session.php");
if($session->logged_in){
echo "You are logedIn";
}
else{
?>
<form id="loginform" class="form-horizontal" role="form" action="process.php" method="POST">
<input id="login-username" type="text" class="form-control" name="user" value="<? echo $form->value("user"); ?>" placeholder="username">
<input id="login-password" type="password" class="form-control" name="pass" placeholder="password" value="<? echo $form->value("pass"); ?>">
<input type="submit" value="Login" class="btn btn-success">
</form>  
<?   
}
?>

如果你只想隐藏.php,你可以试试这个:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)?$ $1.php [L,E]

您的<form...>应该具有:

action="/process"

而不是CCD_ 2,因为您的第二个重写规则已经在URI中添加了CCD_。

您还需要忽略第一个重定向规则中的POST请求,因为在执行外部重定向时POST数据会丢失。

RewriteEngine On
RewriteBase /
# To externally redirect /dir/file.php to /dir/file
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} 's/+(.*?/)?(?:index)?(.*?)'.php['s?] [NC]
RewriteRule ^ %1%2 [R=302,L,NE]
# To internally forward /dir/file to /dir/file.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1'.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php [L]