CodeIgniter .htaccess发行www和非www网址

时间:2017-03-16 10:51:41

标签: apache .htaccess codeigniter redirect

我有一个在CodeIgniter HMVC中开发的网站。我使用的是 https 协议。

我只想使用非www网址,https://seocompany.us.com

如果某人尝试使用https://www.seocompany.us.com,则应重定向到https://seocompany.us.com

以下是我的.htaccess代码,如果我使用https://seocompany.us.com/services,则会正常工作,但如果我输入https://www.seocompany.us.com/services并重定向到https://seocompany.us.com/index.php?/services index.php >

  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]

  RewriteCond %{SERVER_PORT} 80 
  RewriteRule ^(.*)$ https://seocompany.us.com/$1 [R,L]

2 个答案:

答案 0 :(得分:1)

您只是检查是否通过安全方案端口发出请求。您没有检查子域前缀。试试这个:

RewriteBase /

# force https
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

# force non-www
RewriteCond %{HTTP_HOST} ^www\.seocompany\.us\.com [NC]
RewriteRule ^(.*)$ http://seocompany.us.com/$1 [R=301]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

同时清除浏览器缓存或从其他浏览器/私人窗口尝试。

答案 1 :(得分:1)

最后,我根据@ Tpojka的工作解决了这个问题。我在这里分享我的解决方案。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]