【发布时间】:2023-03-25 19:18:01
【问题描述】:
填写并提交此表格后:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>My App</title>
</head>
<body>
<?php echo validation_errors(); ?>
<?php echo form_open('search'); ?>
<p>
<input type="input" name="username" placeholder="@UserName" />
<input type="submit" name="submit" value="Search" />
</p>
</form>
</body>
</html>
我提交的数据首先被处理,用户应该被重定向到search_page3.php。相反,我收到了这个错误:
找不到
在此服务器上未找到请求的 URL /search。
Apache/2.2.24 (Amazon) 服务器位于 ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com 端口 80
这是我的控制器:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Search extends CI_Controller {
public function index()
{
$this->load->helper('form');
$this->load->library('form_validation');
// ...
$this->form_validation->set_rules('username', 'username', 'required');
$username = $this->input->post('username');
if($this->form_validation->run() === FALSE || $this->val_username($username) === FALSE)
{
$this->load->view('search_page2');
}
else
{
// process this data
// ...
$data['data'] = $data;
$this->load->view('search_page3', $data);
}
}
// additional helper functions
// ...
}
/* End of file search.php */
/* Location: ./application/controllers/search.php */
我在this answer 中读到,Juan Carlos 通过将 public_html 的 AllowOverride 设置为 All 解决了他的 URL 问题。 为了安全起见,我的问题是,我该如何解决我的错误?
这是我的 CodeIgniter application/config/config.php 文件中的基本网址:
$config['base_url'] = 'http://xxx-xx-xxx-xxx-xxx.compute-1.amazonaws.com/';
这是我的 EC2 实例中的httpd.conf:
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# features.
#
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#
#
这是我的.htaccess 文件,位于/var/www/html
RewriteEngine On
# Put your installation directory here:
# If your URL is www.example.com/, use /
# If your URL is www.example.com/site_folder/, use /site_folder/
RewriteBase /
# Do not enable rewriting for files or directories that exist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# For reuests that are not actual files or directories,
# Rewrite to index.php/URL
RewriteRule ^(.*)$ index.php/$1 [PT,L]
【问题讨论】:
-
能否展示表单的html部分(
form_open部分)的源代码? -
+1 form_open() 是一个内置的 CodeIgniter 表单助手,它包含帮助处理表单的函数。 ellislab.com/codeigniter/user-guide/helpers/form_helper.html
标签: php codeigniter amazon-ec2