CodeIgniterのURLから「index.php」を削除するにはどうすればよいですか?

codeigniter php
CodeIgniterのURLから「index.php」を削除するにはどうすればよいですか?

CodeIgniterのhttp://en.wikipedia.org/wiki/Uniform_Resource_Locator[URL]から `index.php`を削除するにはどうすればよいですか?

設定ファイルから「index.php」を削除し、Apache(2.2.11)で「rewrite_module」を実行しました。http://en.wikipedia.org/wiki/Htaccess [.htaccess]ファイルは次のとおりです。

RewriteEngine on

RewriteCond $1 !^(index\.php|images|captcha|css|js|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

これで、リンクをクリックすると、URLが見つからないことがわかります。 何が問題ですか?

  4  2


ベストアンサー

あなたのhttp://en.wikipedia.org/wiki/Htaccess[.htaccess]ファイルでこれを試してください:コメントはあなたのためにそれを調整するのに役立つはずです…​

これは、いくつかのCodeIgniter Webサイトのインストールで完全に機能します。 また、mod_rewriteがインストールされていない場合、404ページに移動します(または、目的に合わせて変更できます)。

    RewriteEngine On
    RewriteBase /

    #'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ index.php/$1 [L]

    #Checks to see if the user is attempting to access a valid file,
    #such as an image or css document, if this isn't true it sends the
    #request to index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    #This last condition enables access to the images and css folders, and the robots.txt file
    RewriteCond $1 !^(index\.php|(.*)\.swf|images|robots\.txt|css|docs|cache)
    RewriteRule ^(.*)$ index.php/$1 [L]



    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.
    ErrorDocument 404 /application/errors/404.php

仮想ホストファイルを確認し、これらの項目が設定されているかどうかを確認します-これらにより、.htaccessファイルがhttp://en.wikipedia.org/wiki/Uniform_Resource_Locator[URL]を正しく書き換えることができる場合があります。

Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all

4


これは100%動作します、私はそれを試しました。 .htaccessファイルに* only *を追加します。

RewriteEngine On
RewriteCond $1 !^(index\.php|(.*)\.swf|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

3


CodeIgniterユーザーガイドで提案されている書き換えルールにも問題がありました。 index.phpの前からスラッシュを削除して解決しました

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

2


まず、http://codeigniter.com/user_guide/general/controllers.html#default [default controller]を定義したことを確認してください。 次に、http://en.wikipedia.org/wiki/Uniform_Resource_Locator [URLs]を、それらに関連付けられたコントローラーが存在するように構築するようにしてください。 例えば、

ホームページ:

example.com/home/

または_About us_ページの場合:

example.com/about/

また、mod-rewriteモジュールが有効になっていることを再確認してください。

0


私もこの問題を抱えており、シェーンの答えが私を助けてくれることがわかりました。 WAMPにサイトをセットアップしています。

RewriteBase /mysite/

`mysite`はApacheで設定されたエイリアスです。 これは私のすべてのサイトで機能しました。

0


htacess
RewriteEngine on

#Any HTTP request other than those for index.php,
#assets folder, files   folder and robots.txt
#is treated as a request for your index.php file.

RewriteCond $1 !^(index\.php|assets|files|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

この後、 `application / config / config.php`に移動し、これらの2つの変数を下記の値で変更します。

$config['base_url'] = '';

and

$ config ['index_page'] = '';

0


すべてのCodeigniterプロジェクトで、以下の.htaccessコードを使用します。

RewriteEngine on
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

これが役に立つことを願っています。

0


タイトルとURLをコピーしました