Два проекта Laravel на одном VPS с Apache - PullRequest
1 голос
/ 18 октября 2019

У меня есть два проекта Laravel, установленные на сервере Apache. Один из проектов имеет свой собственный домен, скажем, это mydomain.dev, домен другого - просто vps-address.com/project2.

Теперь проблема в том, что, когда я ввожу mydomain.dev, я вижу проект1 какдолжно быть. Но когда я ввожу mydomain.dev/project2, я вижу другой проект, но я хочу сделать его недоступным таким образом. Кроме того, при вводе vps-address.com/project1 или vps-address.com/project2 я получаю 500 Internal Error с ошибкой в ​​error.log, говорящей:

Запрос превысил ограничение 10 внутренних перенаправлений из-за вероятной ошибки конфигурации. Используйте LimitInternalRecursion для увеличения лимита, если необходимо.

Это моя структура папок:

/var/www/html/project1
/var/www/html/project2

Это моя /etc/apache2/sites-available/000-default.conf:

DocumentRoot /var/www/html
Alias /project1 /var/www/html/project1/public
Alias /project2 /var/www/html/project2/public

<Directory /var/www/html/project1>
    AllowOverride All
</Directory>

<Directory /var/www/html/project2>
    AllowOverride All
</Directory>

<VirtualHost *:80>
        DocumentRoot /var/www/html/
    ServerName vps-address.com
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/project1/public
    ServerName mydomain.dev

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

<VirtualHost *:80>
        ServerName vps-address.com/project2
        DocumentRoot /var/www/html/project2/public
</VirtualHost>

И мой .htaccess в обеих / public папках:

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

    RewriteEngine On

    # 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>

Я бы хотел, чтобы project2 был доступен только по этому адресу: vps-address.com/project2, а не mydomain.dev/project2, а project1 был доступен только: mydomain.dev.

Возможно ли это сделать с Laravel и Apache2?

1 Ответ

1 голос
/ 18 октября 2019

Проверьте эту конфигурацию:

DocumentRoot /var/www/html

<Directory /var/www/html/project1>
    AllowOverride All
</Directory>

<Directory /var/www/html/project2>
    AllowOverride All
</Directory>

<VirtualHost *:80>
    DocumentRoot /var/www/html/
    ServerName vps-address.com
    Alias /project2 /var/www/html/project2/public
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/project1/public
    ServerName mydomain.dev

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Редактировать: Также измените .htaccess в /var/www/html/project2/public на следующее:

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

    RewriteEngine On
    RewriteBase /project2/

    # 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...