Php 如何通过htaccess访问文件?
我有一个文件夹结构,如Php 如何通过htaccess访问文件?,php,.htaccess,Php,.htaccess,我有一个文件夹结构,如 Controller |_check.php View |_ .htaccess |_ index.php |_ Webroot |_ js |_common.js .htaccess In.htaccess <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ View/ [L] Rewri
Controller
|_check.php
View
|_ .htaccess
|_ index.php
|_ Webroot
|_ js
|_common.js
.htaccess
In.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ View/ [L]
RewriteRule (.*) View/$1 [L]
</IfModule>
问题是ajax在使用两个URL时无法正常工作
无论我是需要更改文件夹结构来更正它,还是需要更改任何htaccess文件来访问
check.php
?这与文件夹结构无关,而是与错误的htaccess重写规则有关
“根目录”中的htaccess将所有请求重定向到视图文件夹(我假设默认为index.php)
我不明白你想做什么,如果你解释一下,我也许能帮你
在当前设置中,除了View/index.php之外,您不能访问任何文件(即使在传递GET参数url时)
编辑:
在这种情况下,如果希望View/index.php成为唯一可访问的文件,并强制人们通过View/index.php文件,则可以使用php会话变量
像这样的
在view.php文件的顶部:
session_start();
$_SESSION['viewCheck'] = true;
//rest of view.php code
在check.php代码(或您试图通过AJAX访问的文件)中
注1:
您应该删除htaccess文件的重写规则
注2:
请记住,这不是防弹的(也可能是伪造的),因为:
你为什么不在“视图”文件夹中设置域的路径,这样就没有人可以访问你的控制器等 我认为这应该比玩.htaccess更简单 大多数PHP框架都是这样做的
如果您需要访问check.php的函数,您可以创建一个“ajax.php”来检查请求是否正确,然后使用“check.php”来捕获结果 我在根文件夹中有三个文件
index.php
(查看页面),common.js
,和result.php(php)
。单击index.php
(视图)文件中的一个按钮,将触发一个ajax函数,以result.php
。问题是每个人都可以直接访问result.php
。如何避免呢?我尝试创建文件夹结构,所有php文件(check.php
)都位于根目录后面的文件夹中。所以它不会直接从浏览器访问。我不熟悉rewrite rue。结果必须是ajax吗?您不能使用常规表单吗?因为AJAX脚本必须可以从外部访问(因此,如果他不能更改为常规表单,我的问题是),您可以创建一个“AJAX.php”,检查请求是否正确,然后使用“check.php”捕获结果!如果请求有效,那么我可以使用require('../Controller/check.php')
在视图/ajax.php
中。像那样?是的,你可以。但是使用1个文件或2个文件也是一样的。您可以直接在check.php中检查“有效性”。使用ajax.php只是将有效性检查从一个文件移动到另一个文件。
var url = 'check.php'; // OR '../Controller/check.php'
session_start();
$_SESSION['viewCheck'] = true;
//rest of view.php code
session_start();
if (isset($_SESSION['viewCheck']) && $_SESSION['viewCheck'] === true) {
//Code of check.php
} else {
//Error message or redirect to view.php, for instance
//error message example
header('HTTP/1.0 401 Unauthorized');
//Redirect example
header("Location: http://www.yourhost.com/View/index.php");
}