【问题标题】:www.example.com at the root shows up but www.example.com/dev/admin gives error根目录下的 www.example.com 出现,但 www.example.com/dev/admin 出现错误
【发布时间】:2011-04-23 04:38:57
【问题描述】:

这是我面临的一个奇怪的问题。当我从任何浏览器访问 www.example.com 时,它显示正常。当我访问位于根目录下的 dev 文件夹中的站点(如 www.example.com/dev 或 www.example.com/dev/admin)时,它会显示一个空白页面和一个错误页面,显示遇到错误无法加载您的默认控制器。请确保您的 Routes.php 文件中指定的控制器有效。

我正在使用 CodeIgniter 框架和 PHP v 5.0

在进一步调试时,我发现它在 Router.php 文件中出现了一些异常。

当我注释了从 _set_request 对方法 _validate_request 的调用时,它开始工作。但是有些页面仍然无法正常工作。这些页面的控制器位于 www.example.com/dev/system/application/controllers/admin

这里是config.php

$config['base_url']     = "http://example.com/dev/";
#$config['index_page'] = "index.php";
$config['index_page'] = "";
#$config['uri_protocol']        = "AUTO";
$config['uri_protocol'] = "REQUEST_URI";

$config['url_suffix'] = "";

$config['language']     = "english";

$config['charset'] = "UTF-8";

$config['enable_hooks'] = FALSE;

$config['subclass_prefix'] = 'MY_';

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_=?&\-';

$config['enable_query_strings'] = TRUE;
$config['controller_trigger']   = 'c';
$config['function_trigger']     = 'm';
$config['directory_trigger']    = 'd'; // experimental not currently in use

$config['log_threshold'] = 4;

$config['log_path'] = '';

$config['log_date_format'] = 'Y-m-d H:i:s';
$config['cache_path'] = '';

$config['encryption_key'] = "";

$config['sess_cookie_name']             = 'ci_session';
$config['sess_expiration']              = 7200;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = FALSE;
$config['sess_table_name']              = 'ci_sessions';
$config['sess_match_ip']                = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 7200;

$config['cookie_prefix']        = "";
$config['cookie_domain']        = "";
$config['cookie_path']          = "/";

$config['global_xss_filtering'] = FALSE;

$config['compress_output'] = FALSE;

$config['time_reference'] = 'local';

$config['rewrite_short_tags'] = FALSE;

$config['proxy_ips'] = '';

/*
|--------------------------------------------------------------------------
| CUSTOM CONFIGURATION SETTINGS
|--------------------------------------------------------------------------
|
|
*/

// Table Prefix
$config['tableprefix'] = '';

// CSS Path
$config['css_path'] = 'assets/css/';

// JS Path
$config['js_path'] = 'assets/js/';

// Image Path
$config['images_path'] = 'assets/images/';

// Upload Path
$config['upload_path'] = 'assets/upload/';

// Email Template Path
$config['email_template_path'] = 'assets/email/';

// Allowed Upload Image Extensions
$config['allowed_types'] = 'gif|jpg|png|bmp|jpeg';

// Allowed Upload File Max Size
$config['max_size']  = '10240';

// Email Settings
//$config['admin_to_email'] = 'info@xxx.com';
$config['admin_to_email'] = 'yyyy@gmail.com';
$config['noreply_email'] = 'no-reply@xxxx.com';
$config['noreply_name'] = 'yyyyy';

// Page Settings
$config['page_title'] = 'yyyy';
$config['meta_description'] = '';
$config['meta_keywords'] = '';
$config['meta_author'] = '';

## Uploaded Image Size Setting
// Image Sizes
$config['ad_100X100'] = '100X100_';

The following is in routes.php
$route['default_controller'] = "home";
$route['scaffolding_trigger'] = "";

The value in .htaccess
RewriteEngine on
RewriteCond $1 !^(index\.php|assets|fckeditor|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?$1 [L,QSA]

我们将不胜感激任何解决此问题的帮助。

【问题讨论】:

  • 我假设您的 dev 文件夹包含来自根文件夹的文件副本?那是 - abc.com 的开发区?
  • 附带说明——“ping”可以理解为使用 ICMP 数据包来测试 IP 地址或域。因此,您可以“ping”诸如“www.abc.com”之类的地址,但不能 ping 文件夹或文件。仅供参考。 (我会调整你的问题,因为它让我感到困惑,并且可能会让其他人感到困惑。)
  • 另一个旁注:example.com 保留用于提供域示例,不会冒指向不相关的真实网站的风险。
  • @Elijan 是的,dev 文件夹基本上是 www.example.com 的开发区。 @Lucanos ping 我的意思是我在浏览器中输入它并请求该站点。对不起。 @Ates 我已经开始使用 www.example.com ...对不起。现在我看到 abc.com 确实听起来很混乱。
  • 查看我的回答应该可以解决您的问题。您 example.com 中的 .htaccess 应该排除您的 dev 文件夹

标签: php codeigniter


【解决方案1】:

我假设 dev 文件夹是 abc.com 的开发区,还是只是一个静态站点?但不管怎样。

在您的 abc.com/.htacces 文件中,将 dev 文件夹排除在重写之外,这样 abc.com 的 codeigniter 就不会像这样处理对该文件夹的请求。

RewriteCond $1 !^(index\.php|assets|fckeditor|dev|robots\.txt)

【讨论】:

    猜你喜欢
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2016-12-15
    • 2018-12-04
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    相关资源
    最近更新 更多