【问题标题】:Apache Authoization Header Not found Even After .htaccess modification即使在 .htaccess 修改后也找不到 Apache 授权标头
【发布时间】:2016-07-28 05:24:25
【问题描述】:

我有一个具有如下 .htaccess 文件的 laravel 应用程序

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

我希望我的请求标头中有一个“授权”密钥,但它没有在运行 Ubuntu 14.0.4 的开发服务器中通过。

相同的操作系统在我的本地机器上,在本地机器上运行完美。

这两个环境之间的唯一区别是在我的本地机器上,我创建了一个 VirtualHost,因为我无法在开发服务器上创建 VirtualHost,所以我通过 IP 地址/projectroot 访问它

【问题讨论】:

  • 两个 phpinfo() 结果有什么不同,特别是对于 SERVER ["HTTP_CONNECTION"] ?
  • 不,两者都有“keep-alive”值

标签: php apache .htaccess laravel ubuntu


【解决方案1】:

所以我终于找到了原因。实际上是我的 Apache 默认配置文件不允许我的项目 .htaccess 文件覆盖其配置。这就是为什么 .htaccess 中的行

 RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

没有效果。为了允许,我把这个指令放在我的 apache 配置文件中,在我的例子中是 /etc/apache2/sites-available/000-default.conf

<Directory /var/www/html/>
                Options Indexes FollowSymLinks MultiViews
                # AllowOverride None (Old value)
                AllowOverride All #(New Value)                   

                Order allow,deny
                allow from all
                # Uncomment this directive is you want to see apache2's
                # default start page (in /apache2-default) when you go to /
                #RedirectMatch ^/$ /apache2-default/
        </Directory>

【讨论】:

    猜你喜欢
    • 2020-02-03
    • 2015-05-11
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 2017-03-22
    • 2021-06-23
    • 2014-12-20
    • 2018-04-28
    相关资源
    最近更新 更多