これを .htaccess ファイルに追加します (Apache を使用していると仮定します):
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
それは常にwwwを追加します。ユーザーが入力しなくても。それはあなたの問題を解決するはずです。
これを実行して URL から index.php を削除するには、このコード ブロックを EE インストール (CI を使用) に使用します。
<IfModule mod_rewrite.c>
RewriteEngine On
# Removes index.php
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
# Redirects index.php when user adds them to a URL
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{THE_REQUEST} !/system/.*
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,L]
# Appends www when absent
RewriteCond %{http_host} ^mysite.com [NC,OR]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301,L]
</IfModule>
最初のブロックは、標準の EE ベースの書き換えで、すべての URL から index.php を削除します。コードの 2 番目のブロックは、ユーザーによって index.php が追加された URL を保持し、検索エンジンで重複した URL を解決して提供しないようにするための優れた追加機能です (したがって、SEO に悪影響を及ぼします)。代わりに、正しい URL が存在する場合はその URL に適切に転送するか、必要に応じて 404 を返します。そしてもちろん、コードの最後のブロックは www を追加します (または削除できます)。