4

私は共有ホストを使用しており、PHP は CGI スクリプトとしてインストールされています。これがすべての問題であり、mod_rewrite が有効かどうかを確認できません。

Note: I don't have any root level access so i can't much do with Shell.

私は次のことを試しました: 1) phpinfo()
で チェックインしたところ、これが PHP-CGI で探すのに間違った場所であることがわかりました。


2)PHP-CGIで動作しないapache_get_modulesから取得しようとしました:(
3)試しました:

if (strpos(shell_exec('/usr/local/apache/bin/apachectl -l'), 'mod_rewrite') !== false) {
    // mod_rewrite is enabled
}

これはApacheへのパスを要求していますが、この情報がありませんSHELLは返信できず、$_SERVERには何もありません。
4) .htaccess で確認しRewriteEngine Onましたが、この後、サイトで 500 内部サーバー エラーがスローされます。RewriteEngine が存在しないことが原因である可能性がありますが、誰かに見せるためにこれを書く必要があります。

誰でも、これを完了させる方法を確認できます。

ありがとう

4

2 に答える 2

6

PHP CGI では、サーバーで mod_rewrite が使用可能かどうかを簡単に確認する方法はありません。

したがって、サーバーへのテスト呼び出しを行って、それを見つける必要があります。この方法では、次の手順を使用できます。

  1. サーバー上にという名前のディレクトリを作成mod_rewrite_testします。

  2. .htaccess次のコードを使用して、このディレクトリにファイルを追加します。

    <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /mod_rewrite_test RewriteRule .* mod_rewrite_test.txt </IfModule>

    を。最初の行は、mod_rewrite が利用可能な場合にのみ以下のコードを実行するように apache に指示します
    。2 行目は書き換えエンジンを有効にし
    ます。 c. DOCUMENT_ROOT
    3 行目は、 dからの書き換えベース ディレクトリ パスを設定します。mod_rewrite_test.txt4 行目は、ディレクトリに送信されたすべての要求に対してファイルの内容を返しますmod_rewrite_test

  3. という名前のファイルmod_rewrite_test.txtを同じディレクトリに作成します。このファイルに書き込みok、保存します。

  4. CURL次に、 php スクリプトを使用して、次のような URL を呼び出します。

    http://www.your-domain.com/mod_rewrite_test/test.php を開き、応答を確認します。

    したがって、私たちの.htaccessコードによると、mod_rewrite がアクティブでサーバー上で動作している場合、test.php ファイルが存在しなくても、mod_rewrite_test.txtファイルの内容が返されます。ok

    それ以外の場合は、404 - ページが見つかりませんというエラーが返されます。

于 2014-12-21T13:27:53.047 に答える
-4

mod_rewrite モジュールが有効になっているかどうかを確認するには、サーバーのルート フォルダーに新しい php ファイルを作成します。次のように入力します

echo phpinfo();

ブラウザでファイルにアクセスします。

于 2013-08-19T09:19:16.520 に答える