web-dev-qa-db-ja.com

Apache .htaccess <ifModuleはここでは許可されていません

PHP 5.5を使用してUbuntu PreciseでApacheを実行する

私のvar/www/にアクセスしようとすると、500が返されます。

/var/log/Apache2/error.log

ショー:

/ var/www/web/.htaccess: <IfModule not allowed here

私の.htacessは:

DirectoryIndex app.php


<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]

    RewriteRule .? %{ENV:BASE}/app.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>       
        RedirectMatch 302 ^/$ /app.php/       
    </IfModule>
</IfModule>

私のApache.confに追加しました:

<Directory />
AllowOverride ALL
</Directory>

そして、それは私がApacheを再起動した後に機能しました。

13
Kiksy

.htaccessファイルからの構成を有効にするには、Apacheを構成する必要があります。したがって、ディレクトリセクションで、オプションがあることを確認してください

Allowoverride ALL 

詳しくは allowoverride の詳細をご覧ください。

設定でmod_rewriteのみを使用している場合は、FileInfoのみを設定できる可能性があります。他のサイトへのリダイレクトを実行できるように、常に Options パラメータをSymLinksIfOwnerMatchに設定します。

Allowoverride FileInfo 
Options SymLinksIfOwnerMatch

この設定がすでに設定されている場合は、virtualhostの設定に情報を追加してください。

25
Xerus