URLルーティングに.htaccessを使用するCIアプリケーションがあります。私の基本的な設定は以下の通りです:問題CodeIgniterのURLをWWWにリダイレクト
RewriteRule ^$ /var/www/html/ferdy/jungledragon/index.php [L]
RewriteCond $1 !^(index\.php|images|img|css|js|swf|type|themes|robots\.txt|favicon\.ico|sitemap\.xml)
RewriteRule ^(.*)$ /var/www/html/ferdy/jungledragon/index.php/$1 [L]
これらのルールは、CIのアプリのためにかなり標準的です。例外リスト内のURLを除くすべてのURLをindex.phpフロントコントローラーに書き換えます。上記の行は、通常はすべてのURLの一部として表示されるindex.phpも隠します。
これまでのところ、とても良いです。すべてがうまく動作します。さて、SEOのために私はすべてのトラフィックをwwwに強制したいと思います。これらの最後の2行はhttp://www.jungledragon.com/anything URLへhttp://jungledragon.com/anything URLを書き換える
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^$ /var/www/html/ferdy/jungledragon/index.php [L]
RewriteCond $1 !^(index\.php|images|img|css|js|swf|type|themes|robots\.txt|favicon\.ico|sitemap\.xml)
RewriteRule ^(.*)$ /var/www/html/ferdy/jungledragon/index.php/$1 [L]
rewritecond %{http_host} ^jungledragon.com [nc]
rewriterule ^(.*)$ http://www.jungledragon.com/$1 [r=301,nc]
:だから私は、次のようにルールを拡張しました。この種の作品ですが、index.phpの部分を戻します。http://jungledragon.com/anythingはhttp://www.jungledragon.com/index.php/anythingになります。
互いに干渉しないようにこれらのルールをどのように組み合わせるのですか。私は、CI規則の前にWWW書き換えをやってみました。これは実際のリダイレクトを行うのではなく、Apache 301のページにエラーがあることを示しています。
また、後続のスラッシュを取り除くためのルールも含めたいと思いますが、ここでは質問を簡単にしましょう。私はここで、他の場所で役に立つポストを見つけましたが、何らかの理由で私の状況に対して正しい正確な構文が見つからないことに注意してください。
編集:ありがとうございました。これは動作します:
Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^jungledragon.com [nc]
rewriterule ^(.*)$ http://www.jungledragon.com/$1 [r=301,nc,L]
RewriteRule ^$ /var/www/html/ferdy/jungledragon/index.php [L]
RewriteCond $1 !^(index\.php|images|img|css|js|swf|type|themes|robots\.txt|favicon\.ico|sitemap\.xml)
RewriteRule ^(.*)$ /var/www/html/ferdy/jungledragon/index.php/$1 [L]
OPルールには[C]フラグはなく、[NC]のみです。 OPが少しだけ自分自身を学ぶことができるように、Apacheのmor_rewriteマニュアルへのリンクを投稿することもできます。 – LazyOne
申し訳ありませんがまだ反応していません、仕事中ですが、今夜これを試します。 – Ferdy
+1完璧です。ありがとう – brenjt