2012-04-16 29 views
3

好的,我查了一下,我似乎無法找到答案。非常高級.htaccess

現在我並不是要求你給我一段代碼,而是說「這是修復」,我希望你能解釋你是如何做到的,你想出了什麼等等。我真的很想知道更多關於這方面的知識,唯一可以學習的方法就是舉例。

現在我需要做的是:

目前我的博客(文字新聞轉到數字,因爲他們自己的世界),是在根目錄下。所以我的帖子看起來像:http://localhost/hello-world。只是一個例子。

但是,我剛剛使用Code Igniter擴展了我的網站,並使用了定製的PHP腳本。我需要將Code Igniter腳本放在根目錄下,並將博客移動到/ main /或/ blog /。我不想擺脫我的博客,但我不希望谷歌必須重新索引每一個博客文章,或讓谷歌導致糟糕的帖子。更重要的是,我不想在這裏坐幾個小時,爲每個博客文章(其中數百篇)創建重定向URL。

現在我需要重定向爲301重定向。

繼承人我碰到過這個問題。

我需要有這個在.htaccess:

RewriteEngine on 
RewriteCond $1 !^(index\.php|admin|css|img|js|main|favicon.ico) 
RewriteRule ^(.*)$ index.php/$1 [L] 

這消除難看的本地主機/ index.php文件/控制器/控制器功能/

但我需要讓我的.htaccess重定向一切都在/但不是我已經擁有的預設網址。

的預設網址arguements我通過代碼點火器有【

/details/ 
/register/ 
/city/ 
/search_process/ 
/login/ 
/logout-success/ 
/login-success/ 
/logout/ 
/login/ 
/manage/ 
/panel/ 

因此,在本質..

本地主機/您好世界/就得301重定向到localhost /主/您好世界

本地主機/(任何-的最上面)/將不得不NOT重定向到/主/或/博客/

另外,如果您注意到在當前的.htaccess中,我已經允許/ admin// css// img// js /(/ main /是顯然的博客)和favicon.ico(使它看起來很棒)

請上學吧! (你多久聽到一次?:P)

信用證到LAWRENCE CHERONE!

他原本給了我答案,在此之間和現在我認爲我第一次犯了一個錯字,並且意外丟失了代碼,並且在複製/粘貼後第二次沒有工作(導致第一次我真的打出來學習它)。

因此,這裏配合修改後的工作解決方案。我完全贊同Lawrence Cherone(那個對這個問題有公認的答案的人),因爲他幫助我弄清楚了這一點,最終我無法在沒有他的情況下得到這個工作解決方案。再次感謝你!

RewriteEngine on 
RewriteCond $1 !(panel|manage) 
RewriteRule ^(.*)$ http://localhost/choosefitness/main/$1 [R=301,L] 

RewriteEngine on 
RewriteCond $1 !^(index\.php|admin|css|img|js|less|favicon.ico) 
RewriteRule ^(.*)$ index.php/$1 [L] 

這簡單地陳述,只要第一個參數http://localhost/choosefitness/first-argument沒有/面板或/管理。它應該301重定向到/主要/((必須提供301重定向的完整URL,而不僅僅是主/ $ 1)

然後它聲明任何請求在管理css img js lss或favicon.ico上應該被忽略。否則應該在index.php上進行(這會從代碼點火器中的url中刪除index.php)

我不知道它爲什麼起作用,我只知道它的作用。但是我沒有完全測試它,但我相信能夠訪問/ css而不用重定向,您必須添加| css到第一個RewriteCond。但是服務器無需這樣做就可以訪問css文件。

+0

注意。第一個RewriteCond中沒有條件的任何URL都不起作用,並將被髮送到/ main /。所以http:// localhost/choosefitness/css將不起作用,因爲它不在第一個RewriteCond中。其次,如果URL參數不在第二個條件中,它也不會被忽略,並且會對index.php起作用。因此,在第二個RewriteCond中沒有| css,但是在第一個RewriteCond中使用它將充當http://localhost/choosefitness/index.php/css,並充當Code Igniter參數。 – 2012-04-17 01:22:51

回答

2

這是未經測試&相當肯定index.php/$1/$2是錯誤的,但...你可以包含匹配您的CI規則的規則,然後傳遞到CI控制器,如果沒有找到匹配,則改寫爲您/blog/網址。也別忘了逃避。在favicon\.ico部分。

RewriteEngine on 
RewriteCond $1 !^(index\.php|admin|css|img|js|main|favicon\.ico) 

RewriteRule ^(details|register|city|search_process|login|logout-success|login-success|logout|login|manage|panel)/(.*)$ index.php/$1/$2 [L] 
RewriteRule ^(.*)$ /blog/$1 [L] 

編輯:如果你的參數是在前面然後切換這樣的規則的東西:

RewriteRule ^(.*)/(details|register|city|search_process|login|logout-success|login-success|logout|login|manage|panel)$ index.php/$1/$2 [L] 
+0

確定關閉。這是我的:RewriteRule ^(詳細信息|註冊|城市| search_process |登錄|註銷成功|登錄成功|註銷|登錄|管理|面板)(。*)$ ./index.php/$1 [L] 那就是我改變了。它現在在/blog/index.php/panel上發出請求 – 2012-04-16 20:33:00

+0

未找到 在此服務器上找不到請求的URL /blog/index.php/panel。 – 2012-04-16 20:33:40

+0

您嘗試使用哪個網址:類似'。/ city/bla'的網址會觸及CI規則,而。。/ something/bla'會觸及博客網址,看起來您正在嘗試./index.php/面板'不能匹配你需要使用'./ panel /'忘記'index.php'部分。 – 2012-04-16 20:37:53