我有一个laravel应用程序,其.htaccess文件如下
<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 访问它
所以我终于找到了原因。实际上是我的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>