2015-02-10 31 views
1

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

的.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> 
<? 
} 
?> 

回答

0

<form...>应该有:

action="/process" 

而不是action="process.php",因为您的第二条重写规则已经在URI中添加了.php

您还需要忽略来自第一个重定向规则的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] 
+1

谢谢你,先生。很高兴在这里再次见到你。 – koc 2015-02-10 16:41:21

+0

不客气,很高兴它解决了。 – anubhava 2015-02-10 16:44:52

1

如果你想只是隐藏.PHP你可以试试这个:

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

没有OP对此有更多正确的规则。 – anubhava 2015-02-10 16:30:01