ドメインのサブフォルダーに配置された CodeIgniter プロジェクトがあります。CodeIgniter ディレクトリを含むすべての URL に対して、.htaccess (CodeIgniter サブフォルダーに配置) で次のことを実行したいと考えています。
- URL から「index.php」を削除します。
- 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]