Laravel:在宅基地上忽略了htaccess?

时间:2018-02-19 13:48:32

标签: php .htaccess laravel-5

我创建了一个Laravel应用程序,我在本地使用宅基地开发,并在生产服务器上进行在线开发。

我只有www.mydomain.com的SSL证书,但mydomain.com没有, 这就是为什么我强迫htaccess重定向到https://www.*****。我按照https://stackoverflow.com/a/13997498/2311074

中的说明更改了文件myproject/public/.htaccess

重定向在我的生产服务器上工作正常但是我的本地环境没有重定向发生在宅基地上。为什么在我的本地环境中忽略重定向?

以下是完整的.htaccess文件:

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

    RewriteEngine On


    RewriteCond %{HTTPS} off
    # First rewrite to HTTPS:
    # Don't put www. here. If it is already there it will be included, if not
    # the subsequent rule will catch it.
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    # Now, rewrite any request to the wrong domain to use www.
    # [NC] is a case-insensitive match
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

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

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


</IfModule>

3 个答案:

答案 0 :(得分:3)

.htaccess不适用于Homestead,因为it uses nginx.htaccess适用于Apache。

答案 1 :(得分:1)

首先SSH进入宅基地并运行命令

flip

它将停止nginx,并将开始apache

现在您的.htaccess可以使用了。

PS

另一种选择是在type: apache文件中使用Homestead.yaml。 但这出于某种原因对我不起作用。

答案 2 :(得分:0)

我有类似的问题。我的生产服务器使用Apache,并且我需要mod_rewrite。 Laravel甚至附带了.htaccess文件!

这是我在这里找到的一种优雅的解决方案。

  1. 在我的Homestead.yaml文件中添加“类型:apache”。

    网站:

    地图:mylocalapp.com

    到:/ home / vagrant / code / public

    类型:阿帕奇

  2. 重新部署使用Apache的流氓。

    无所事事--provision

Solved from the answer here on Stack Overflow