1

これはWebサーバーの構成変更が行われた可能性があり、ホスティングプロバイダーは誰にも通知していませんが、とにかく...

次のディレクトリ構造でCodeigniterインスタンスを設定しています。

/root
   /codeigniter
        /app
        /sys
   /www
        /sandbox
            /ci
                /js
                /css
                /img
                .htaccess
                index.php

したがって、index.phpには、次の変数があります。

$application_folder = '../../../codeigniter/app';
$system_path = '../../../codeigniter/sys';

これらは共有ホスティングプロバイダーであるため相対的な定義ですが、そのように機能しているように見えるので、これは問題ではないと思います(WAMPでは、c:/ wamp/ciなどのフォルダーパスが明示的に定義されています/応用)

config.phpには、次の変数が設定されています。

$config['base_url'] = 'http://******.co.uk/sandbox/ci/';
...
$config['index_page'] = '';
...
$config['uri_protocol'] = 'AUTO';

www / sandbox/ciの.htaccessファイルは次のように設定されています。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

数日前まではすべて問題なく動作していましたが、クリスマス直前にかなりの数のファイルを置き換えたため、気付かずに誤って何かを上書きしてしまった可能性があります。この設定は、WAMPサーバーでは正常に機能しますが、routes.phpで定義されているものではないコントローラーの機能にアクセスしようとすると、ライブサーバーでは失敗します。

私のroutes.phpは次のようになります:

$route['default_controller'] = "home_controller";
$route['404_override'] = '';

home_controllerは正常に見えますが、ログイン(auth_controller / loginへのフォームPOSTを介して処理されます)のようなことを行おうとすると、404で失敗します。home_controllerに追加の機能はありません。

ロギングしきい値を4に設定しても、何も興味深いことはありません。ChromePHPは、コントローラーへのパスが見つからないことを示唆しているだけです。

mod_rewriteは機能しているようです。これは、.htaccessファイルにプレーンテキストを追加すると、サーバーエラー500が発生し、さらにindex.phpの書き換えが機能しているためです。また、rewrite_short_tagsをTRUEに設定しています。

config.phpのすべてのuri_protocolタイプを試しましたが、何も違いがないようです。そのため、それが私が行ったことであるか、routes.phpから何かが欠落しているか、または何かが欠落しているように感じます。私の.htaccess。

どんな考えでもいただければ幸いです。私が言ったように、このセットアップ全体は私のWAMPサーバーで問題なく機能します。

4

1 に答える 1

3

問題はあなたのhtaccessにあると思います。このhtaccessをしばらく試してみてください。

<IfModule mod_rewrite.c>

RewriteEngine On

# Set the rewritebase to your CI installation folder
RewriteBase /sandbox/ci/


# Send everything to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

</IfModule> 

これがお役に立てば幸いです。

于 2012-12-28T12:15:56.587 に答える