web-dev-qa-db-ja.com

サーバーでmod_rewriteが有効になっているかどうかを確認するにはどうすればよいですか?

現在、私はlightspeed serverでホスティングを使用しています。ホスティングではmod_rewriteが有効になっていますが、そこでスクリプトを機能させることができません。 URLにアクセスしようとすると、404-not found pageが返されます。

Apacheで実行されている別のサーバーに同じコードを配置します。あちらで働いています。だから、.htaccessmod_rewriteの問題だと思います。

しかし、ホスティングサポートはmod_rewriteがオンになっていることを引き続き主張しているので、実際に有効になっているかどうかを確認する方法を知りたいと思います。

phpinfo()で確認しようとしましたが、運がありません。mod_rewriteが見つかりません。lightspeedを使用しているからですか?

チェックする方法はありますか?私を助けてください。ありがとうございました。

FYI:私の.htaccessコードは

Options -Indexes

<IfModule mod_rewrite.c>
DirectoryIndex index.php
RewriteEngine on

RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
</IfModule>

私もこのようにしてみました

DirectoryIndex index.php
RewriteEngine on

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

しかし、同じ結果。

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

    phpinfo();

  2. 作成したファイルにブラウザからアクセスします。

  3. CtrlF 検索を開きます。 「mod_rewrite」を検索します。有効にすると、「ロードされたモジュール」として表示されます

  4. そうでない場合は、httpd.conf(Apache Configファイル)を開き、次の行を探します。

    #LoadModule rewrite_module modules/mod_rewrite.so

  5. 開始時にポンド( '#')記号を削除し、このファイルを保存します。

  6. Apacheサーバーを再起動します。

  7. ブラウザで同じphpファイルにアクセスします。

  8. 「mod_rewrite」を再度検索します。あなたは今それを見つけることができるはずです。

85
Fadzly Othman

コマンドラインから次のように入力します

Sudo a2enmodの書き換え

書き換えモードがすでに有効になっている場合は、その旨が表示されます!

69
KawaiKx

仮想ホスト設定ファイルを使用している場合は、問題の仮想ホストに次のようなディレクティブAllowOverride Allがあることを確認してください。

<VirtualHost *:80>
        ...
    <Directory "directory/of/your/.htaccess">
        AllowOverride All
    </Directory>
</VirtualHost>
52
Jahmic

Apache_get_modules()が認識されないか、phpinfo()でこのモジュールに関する情報がない場合。 .htaccessファイルに次の行を追加して、modの書き換えをテストしてみてください。

RewriteEngine On
RewriteRule ^.*$ mod_rewrite.php

そしてmod_rewrite.php:

<?php echo "Mod_rewrite is activated!"; ?>
15
wappy

コンソール:

<VirtualHost *:80>
        ...
    <Directory ...>
        AllowOverride All
    </Directory>
</VirtualHost>

Sudo a2enmod rewrite
Sudo service Apache2 restart
12
BlocksByLukas

もし

in_array('mod_rewrite', Apache_get_modules())

trueを返し、mod-rewriteが有効になります。

11
Shivanshu

ターミナルで次のいずれかを実行できます。

apachectl -M
Apache2ctl -M

2daygeek から取得

9
Adi Prasetyo

このコードが.htaccessファイルにある場合(mod_rewrite.cのチェックなし)

DirectoryIndex index.php
RewriteEngine on

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

また、500サーバーエラーが表示された状態でサイトの任意のページにアクセスできます。modの書き換えが有効になっていると言っても安全だと思います。

8
Clive

PHPの定義済みApache_get_modules()関数は、有効なモジュールのリストを返します。 mod_rewriteが有効になっているかどうかを確認するには、サーバーで次のスクリプトを実行できます。

<?php
print_r(Apache_get_modules());
?>

上記の例が失敗した場合、.htaccessファイルを使用してmod-rewriteを検証できます。

ドキュメントルートにhtaccessファイルを作成し、次のrewriteRuleを追加します。

RewriteEngine on

RewriteRule ^helloWorld/?$ /index.php [NC,L]

http://example.com/HelloWorld にアクセスすると、内部的に/ index.phpページに転送されますサイト。それ以外の場合、mod-rewriteが無効になっていると、500 Internelサーバーエラーが発生します。

お役に立てれば。

8
starkeen

これはCentOSで機能します。

$ Sudo httpd -M |grep rewrite_module

rewrite_module (shared)を出力する必要があります

5
radtek

Linuxシステムを使用している場合は、次のフォルダーでApache2のすべての有効化モジュールをチェックできます(私の場合):/ etc/Apache2/mods-available

cd /etc/Apache2/mods-available

入力する:ll -a
phpの使用可能なモジュール(この場合はphp 7)フォルダー/etc/php/7.0/mods-availableを確認する場合

cd /etc/php/7.0/mods-available

入力する:ll -a

4

PHP関数を使用できます

      Apache_get_modules

mod_rewriteを確認します

<pre>
<?php
print_r(Apache_get_modules());
?>
</pre>

http://in2.php.net/Apache_get_modules

4
Miqdad Ali

新しいページを作成してこのコードを追加するだけです

 <?php
 if(!function_exists('Apache_get_modules') ){ phpinfo(); exit; }
 $res = 'Module Unavailable';
 if(in_array('mod_rewrite',Apache_get_modules())) 
 $res = 'Module Available';
?>
<html>
<head>
<title>A mod_rewrite availability check !</title></head>
<body>
<p><?php echo Apache_get_version(),"</p><p>mod_rewrite $res"; ?></p>
</body>
</html>

このページを実行して、モジュールが利用可能かどうかを見つけることができます。そうでない場合は、ホスティングに依頼するか、ローカルマシンで有効にするかどうかを確認してから、Wamp Apacheの書き換えモジュールを有効にすることに関連するこのYouTubeのステップバイステップのチュートリアルを確認してください https://youtu.be/xIspOX9FuVU?t=1m43s Wampサーバーアイコン-> Apache-> Apache Modulesおよびrewrite moduleオプションを確認します。

3
Hassan Saeed

私はこの質問が古いことを知っていますが、Apache設定ファイルをAllowOverride AllからAllowOverride Noneに編集できる場合

<Directory "${SRVROOT}/htdocs">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.Apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>
1

入力するだけで、ファイルがそこにあるかどうかを確認する必要があります

cat /etc/Apache2/mods-available/rewrite.load

#で始まる結果行はコメント化されない場合があります

私は正確な問題を抱えていたので、カスタム構造をクリックしてから/index.php/%postname%/を追加して解決しました

これが誰かが私がそれで何が間違っていたのかを見つけたストレスを救うことを願っています。

0
Kyle S

このコードは私のために働いた:

if (strpos(Shell_exec('/usr/local/Apache/bin/apachectl -l'), 'mod_rewrite') !== false) echo "mod_rewrite enabled";
else echo "mod_rewrite disabled";
0
Keinan Goichman