localhost.htaccessがUbuntuで動作しない

localhost.htaccessがUbuntuで動作しない

.htaccess私は自分のファイルを自分のローカルホストで操作しようとしました。私はサーバー上にあり、動作しているのでファイルが動作することを知っています。しかし、ローカルでは動作しないようです。

見つけることができるチュートリアルに従ってすべての上書きを設定しました。/etc/apache2/sites-available/default起動するファイルは次のとおりです。

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

私のニブルサイトと同じディレクトリにあるコードは次のとおりです。

<VirtualHost *:80>
    ServerName nibble.local
    DocumentRoot /var/www/nibble_framework/web/
    <Directory /var/www/nibble_framework/web/>
        AllowOverride All
        Options Indexes FollowSymLinks MultiViews
        Allow from All
    </Directory>
    RewriteLog /var/www/rewrite.log
    ErrorLog /var/log/apache2/error.log
</VirtualHost>

a2ensiteを使用してサイトを有効にし、Apacheを再起動しました。また、私のホストファイルにウェブサイトを追加しました。

  127.0.0.1  nibble.local

a2enmodを使用してモードの書き換えを有効にし、Apacheを何度も再起動/再ロードしました。

  $ a2enmod rewrite 
  Module rewrite already enabled

私の.htaccessファイルにはすでに/var/www/nibble_framework/web/.htaccess次のコードが含まれています。

  Options +FollowSymLinks +ExecCGI

  <IfModule mod_rewrite.c>
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^([^/]*)/?.*$ - [E=FILE:%{DOCUMENT_ROOT}/$1.php]

  RewriteCond %{ENV:FILE} !^$
  RewriteCond %{ENV:FILE} -f
  RewriteRule ^([^/]*)/?(.*)$ $1.php?url=$2 [QSA,L]

  RewriteCond %{ENV:FILE} !^$
  RewriteCond %{ENV:FILE} !-f
  RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
  </IfModule>

実行すると、print_r($_REQUEST)URLが長い文字列で埋められていても常に空の配列です。

これがなぜ失敗するのか知っている人はいますか?

編集する:

Apache2アクセスログ:

~$ tail -f /var/log/apache2/access.log
::1 - - [16/Aug/2011:07:32:39 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
::1 - - [16/Aug/2011:07:32:39 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
::1 - - [16/Aug/2011:07:32:39 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
::1 - - [16/Aug/2011:07:32:40 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
::1 - - [16/Aug/2011:07:32:40 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
::1 - - [16/Aug/2011:07:32:40 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
::1 - - [16/Aug/2011:07:32:40 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
::1 - - [16/Aug/2011:07:32:40 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
::1 - - [16/Aug/2011:07:32:40 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
::1 - - [16/Aug/2011:07:32:40 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"

ベストアンサー1

VirtualHostが正しく処理されていないため、要求の取得にAllowOverrideが設定されていないようです。まず、/etc/hostsファイルは次のようになります。

127.0.0.1   localhost   localhost.localdomain
127.0.1.1   nibble.local

次に、名前ベースの仮想ホストへのインターフェイスを設定する必要があります。現在設定されているかどうかを指定していません。通常はデフォルトのApache設定で設定されており、ubuntu / debianがすでにそのファイルを見つけたようです/etc/apache2/apache2.conf。その行がファイルのどこかに設定されていることを確認してください。

NameVirtualHost *:80

変更が完了したら、Apacheを再起動してください。

sudo /etc/init.d/apache2 restart

いいえ、テストしてみてください。ホストエントリをローカルでのみ設定することを忘れないでください。したがって、これはlocalhostから要求された場合にのみ正しく機能します。詰まったり動作しない場合は、該当する行を投稿してください。/var/log/apache2/error.log

おすすめ記事