Apache .htaccess

Apache .htaccess

在 Ubuntu Precise 上运行 Apache,使用 PHP 5.5

尝试访问我var/www/得到了 500。

/var/log/apache2/error.log

显示:

/var/www/web/.htaccess<IfModule>这里不允许

我的.htaccess是:

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 后它就起作用了。

答案1

您需要配置 apache 以启用 .htaccess 文件中的配置。因此,在目录部分,请确保您有选项

Allowoverride ALL 

了解更多信息 更多信息允许覆盖

在您的设置中,如果您仅使用 mod_rewrite 也许您可以只设置 FileInfo ,我总是设置选项SymLinksIfOwnerMatch 参数能够执行到其他站点的重定向。

Allowoverride FileInfo 
Options SymLinksIfOwnerMatch

我希望这会有所帮助,如果您已经设置了此配置,请使用您的虚拟主机配置添加信息。

相关内容