Php 同一领域的多个Laravel 5项目
我在同一个域的子文件夹上运行了几个Laravel 5项目 每个Laravel应用程序都在生成自己的会话cookie,有时它生成的会话cookie太多,以至于我们在整个域上都会收到http 400错误Php 同一领域的多个Laravel 5项目,php,laravel,session,cookies,laravel-5.2,Php,Laravel,Session,Cookies,Laravel 5.2,我在同一个域的子文件夹上运行了几个Laravel 5项目 每个Laravel应用程序都在生成自己的会话cookie,有时它生成的会话cookie太多,以至于我们在整个域上都会收到http 400错误 我应该在所有这些项目之间共享存储文件夹,还是有任何设置可以防止这种情况发生?我认为您需要为每个子文件夹提供唯一的安全密钥,并为每个子文件夹添加一个特殊变量,然后更改生成的cookie您应该设置Homestead。它非常容易使用。您可以设置多个域,例如:domain1.dev、domain2.dev。
我应该在所有这些项目之间共享存储文件夹,还是有任何设置可以防止这种情况发生?我认为您需要为每个子文件夹提供唯一的安全密钥,并为每个子文件夹添加一个特殊变量,然后更改生成的cookie您应该设置Homestead。它非常容易使用。您可以设置多个域,例如:domain1.dev、domain2.dev。对于每个域,您将拥有自己的cookie 每个Laravel安装应位于其自己的目录中 然后需要定义一个别名,将域子文件夹指向“child”Laravel文件夹 Apache
http.conf
中的示例:
<VirtualHost some.domain:80>
ServerName some.domain
## Path to laravel domain
DocumentRoot "/path/to/some/domain/laravel-1/public"
<Directory "/path/to/some/domain/laravel-1/public">
AllowOverride All
</Directory>
## Path to laravel sub-folder
Alias /laravel-2-path-alias/ "/path/to/some/domain/laravel-2/public"
<Directory "/path/to/some/domain/laravel-2/public">
AllowOverride All
</Directory>
</VirtualHost>
子文件夹安装config\session.php
:
'cookie' => 'a_unique_name'
'path' => '/',
'cookie' => 'another_unique_name'
'path' => '/path/to/sub/folder',
这应该确保每个安装都在编写自己独特的会话cookie。子应用程序生成的任何cookie都不应干扰父应用程序的cookie 既然我找到了解决方案,让我和大家分享一下 首先,您需要使用诸如Redis或database之类的共享会话驱动程序 其次,需要在config/session.php上设置会话cookie和路径相同 之后,您可以在同一个域上运行尽可能多的不同Laravel项目,而不会出现cookie问题 如果您的应用程序根本不需要会话,您可以在app/Http/Kernel.php上完全禁用会话,并注释以下行:
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
将httpd.conf文件编辑为 请检查路径是否因您的系统而异/opt/lampp/htdocs/或/var/www/html/
## Path to laravel sub-folder
Alias /admin-boilerplate/ "/opt/lampp/htdocs/admin-boilerplate/public/"
<Directory "/opt/lampp/htdocs/admin-boilerplate/public">
AllowOverride All
</Directory>
完整的代码看起来像
<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]
# It enables routes when documrnt root set to public foder in httpd.conf file
# change name according to alias name
RewriteBase /admin-boilerplate
</IfModule>
选项-多视图-索引
重新启动发动机
#句柄授权头
RewriteCond%{HTTP:Authorization}。
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_URI}(+)/$
重写规则^1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
#在httpd.conf文件中将documrnt root设置为public foder时,它启用路由
#根据别名更改名称
重写基本/管理样板文件
我们已经在生产中,我们需要多个子文件夹上的多个项目。您是否可以只使用一个,然后使用子域路由,并为每个站点使用包系统等?有点过时,但能给你一个想法吗?我不能,我们真的需要每个项目都在一个子文件夹中。对不起,我读了subdomainnot文件夹?抱歉,我们的项目已经开始运行了,问题是关于会话cookies。我可以共享同一个会话吗
<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]
# It enables routes when documrnt root set to public foder in httpd.conf file
# change name according to alias name
RewriteBase /admin-boilerplate
</IfModule>