Setup子目录重定向到Laravel项目

时间:2017-08-19 21:38:45

标签: apache laravel redirect

我有三个项目,第一个是静态html网站,其他2个项目是Laravel项目。

我为主网站设置了SSL证书。我想将其他Laravel项目设置为主URL的子目录。

我在我的conf文件中添加了别名,但它不起作用。我收到此错误:“尝试打开”https://example.com/admin/“时发生了太多重定向。如果您打开一个重定向的页面以打开另一个页面然后重定向以打开原始页面,则可能会出现这种情况。”

我应该在htaccess文件中添加任何更改吗?

这是我的website.conf文件

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    SSLEngine on
    SSLCertificateFile      /etc/apache2/ssl/***********.crt
    SSLCertificateKeyFile  /etc/apache2/ssl/*********.key
    SSLCertificateChainFile /etc/apache2/ssl/*********.crt

    ServerAdmin admin@example.com
    DocumentRoot /var/www/html/example/public_html/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /admin "/var/www/html/admin"
    <Directory "/var/www/html/admin">
             Options Indexes FollowSymLinks
            AllowOverride All
            Order allow,deny
            Allow from all
    </Directory>

Alias /admin2  "/var/www/html/admin2"
<Directory "/var/www/html/admin2">
         Options Indexes FollowSymLinks
         AllowOverride All
         Order allow,deny
         Allow from all
</Directory>

3 个答案:

答案 0 :(得分:0)

我建议用Laravel Homestead预制盒子看看Vagrant。这将通过编辑Homestead.yaml文件,/ etc / hosts文件,然后配置vagrant机器来实现您想要的功能。您将需要安装虚拟盒以与vagrant一​​起使用。您可以通过在homestead目录中键入vagrant ssh来SSH进入计算机。

文档:https://laravel.com/docs/5.4/homestead

关于流浪汉的YouTube视频:https://www.youtube.com/watch?v=LyIyyFDgO4o

关于安装Laravel Homestead的Youtube视频:https://www.youtube.com/watch?v=tbPGuikTzKk&list=PLfdtiltiRHWEaImCreOC7UkK4U5Xv9LdI

答案 1 :(得分:0)

在Apache设置中,应使用 public 文件夹作为别名。

尝试“ / var / www / html / admin2 / public” ,也尝试使用目录。

类似这样的东西:

Alias /admin2  "/var/www/html/admin2/public"
<Directory "/var/www/html/admin2/public">
         Options Indexes FollowSymLinks
         AllowOverride All
         Order allow,deny
         Allow from all
</Directory>

取决于Laravel的安装,您应该在公共目录中拥有一个.htaccess文件,这可能需要一些额外的时间。

也请在进行更改后重新启动apache。t

答案 2 :(得分:0)

您需要正确设置2件事:

  1. 您的站点的别名在WAMP的别名文件夹中,例如C:\wamp\alias将URL重定向到Laravel文件夹中的public\index.php
  2. 在Laravel的.htaccess文件夹中重写基本public,以便Apache在基本路径的顶部进行重写。

假设您的站点目录位于C:\wamp\www\site中,而别名为localhost/alias

  1. 设置别名以指向public文件夹:
    Alias /site  "/var/www/site/public"
    <Directory "/var/www/site/public">
             Options Indexes FollowSymLinks
             AllowOverride All
             Order allow,deny
             Allow from all
    </Directory>
  1. 在Laravel的RewriteBase文件夹的.htaccess中添加public
    <IfModule mod_rewrite.c>
        <IfModule mod_negotiation.c>
            Options -MultiViews -Indexes
        </IfModule>
    
        RewriteEngine On
        RewriteBase '/site/'
    
        # 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>