2012-08-10 62 views
2

我有一個CodeIgniter項目放置在一個域的子文件夾。 我希望有我的.htaccess(放置在笨子文件夾),以做到以下幾點,對涉及的CodeIgniter目錄中的任何網址:強制結束斜槓,並刪除index.php與子文件夾中的htaccess

  1. 從任何URL刪除「的index.php」。
  2. 始終爲任何網址添加尾部斜線。

目前我的.htaccess這個樣子:


    RewriteEngine on 
    RewriteBase /ci_folder/  #This is the CI Subfolder 

    # Get rid of index.php 
    RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico) 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ ./index.php/$1 [L,QSA] 

    # Add trailing slash 
    RewriteCond %{REQUEST_URI} !(.*)/$ 
    RewriteRule ^(.*[^/])$ $1/ [L,R=301] 

的問題是,它的唯一的工作部分; index.php被正確刪除,但是當添加結尾斜槓時,不是重定向到「固定」url,而是重定向到本地路徑fx。

domain.com/ci_folder/method

被重定向到:

domain.com/home/sites/domain.com/public_html/ci_folder/index.php/method/

其應該是:domain.com/ci_folder/method/代替! (也不含任何的index.php)

---編輯---

這爲我做:


    RewriteEngine on 
    RewriteBase /ci_folder/ 

    RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico) 
    RewriteCond %{REQUEST_FILENAME} -f [OR] 
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteRule ^.*$ - [L] 

    RewriteCond %{REQUEST_URI} !(.*)/$ 
    # dont rewrite if there was posted here! 
    RewriteCond %{REQUEST_METHOD} !POST 
    RewriteRule ^(.*[^/])$ $1/ [L,R=301] 

    RewriteRule ^(.*)$ ./index.php/$1 [L,QSA] 

+0

找到解決方案meself。 – KMN 2012-08-16 18:31:06

+0

你應該在下面添加你的答案,並接受它,所以這個問題可以被標記爲關閉。 – fedmich 2013-03-01 00:11:43

回答

3
RewriteEngine on 
RewriteBase /ci_folder/ 

RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico) 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [L] 

RewriteCond %{REQUEST_URI} !(.*)/$ 
# dont rewrite if there was posted here! 
RewriteCond %{REQUEST_METHOD} !POST 
RewriteRule ^(.*[^/])$ $1/ [L,R=301] 

RewriteRule ^(.*)$ ./index.php/$1 [L,QSA] 
+0

它不工作。 – user254153 2016-10-17 05:17:11

相關問題