我有一個使用.htaccess進行URL路由的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(例外列表中的除外)都重寫到index.php前端控制器。上面的代碼也會隱藏index.php,因爲它通常會顯示爲每個URL的一部分。
到目前爲止,這麼好。一切正常。現在,爲了搜索引擎優化,我想強制所有流量到www。所以,我伸出的規則如下:
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]
這最後兩行重寫http://jungledragon.com/anything網址http://www.jungledragon.com/anything網址。這種作品,但它帶回了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]。你也可以發佈一個鏈接到Apache的mor_rewrite手冊,這樣OP可以學習更多的自己。 – LazyOne
對不起,沒有迴應,我在工作,但今晚會嘗試這個。 – Ferdy
+1完美。謝謝 – brenjt