2

ドメインのサブフォルダーに配置された CodeIgniter プロジェクトがあります。CodeIgniter ディレクトリを含むすべての URL に対して、.htaccess (CodeIgniter サブフォルダーに配置) で次のことを実行したいと考えています。

  1. URL から「index.php」を削除します。
  2. URL の末尾には必ずスラッシュを追加してください。

現在、私の .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/メソッド

にリダイレクトされます:

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]

4

1 に答える 1

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]
于 2013-03-01T14:43:16.483 に答える