apache - mod_rewrite https codeigniter的问题

时间:2016-11-01 00:21:36

标签: apache codeigniter mod-rewrite

我的codeigniter mod_rewrite配置有问题... 这是我目前的配置:

   RewriteCond %{SERVER_NAME} =example.com
   RewriteRule ^.* https://www.%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent,L]

   RewriteCond %{SERVER_NAME} =www.example.com
   RewriteRule ^.* https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent,L]

   RewriteCond %{SERVER_NAME} =www.example.com
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)$ https://%{SERVER_NAME}/index.php/$1 [L]

请注意,这不在.htaccess文件中,这是在我的虚拟主机文件中。

访问example.com会重写为https://www.example.com 并访问www.example.com重定向到https://www.example.com

但访问https://www.example.com/login会显示404页面...

由于

2 个答案:

答案 0 :(得分:1)

Codeigniter URL的结构如下:

SITE_URL /控制器/方法

在以下情况下发生404页面错误:

  1. 您没有控制器
  2. 您的班级名称与控制器不匹配,并且它的第一个字母不是大写。 3.您在控制器内没有指定方法。

答案 1 :(得分:0)

第一条规则基本上没问题。第二条规则并不好,不知道你是如何从中获得无限重定向的。第三条规则有冗余条件和外部重定向格式,但应该是内部重写。除非您的替换包含QSA,否则您不需要?。如果没有?,则会自动附加查询。

RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [R=permanent,L]

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [R=permanent,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?!index.php(?:$|/)).+$ index.php/$0 [END]