gpt4 book ai didi

vhosts - ISPConfig Vhost 允许 Laravel 中的干净 URL

转载 作者:行者123 更新时间:2023-12-01 20:22:42 26 4
gpt4 key购买 nike

我有一个现有的服务器,该服务器运行良好,使用 nginx 和 ISPconfig 托管多个站点。不过我已经创建了一个新网站并希望使用 Laravel。

我已经通过 Composer 成功安装了 Laravel,并且在访问 mywebsite.com/public 时看到了熟悉的欢迎 Blade

接下来我想做的是制作一些干净的网址。我对虚拟主机文件的经验有些有限,而且我在配置方面遇到了一些问题。

我的路线文件如下所示

Route::get('/', function () {
return view('welcome');
});
Route::get('/test', function () {
return view('test');
});

我希望看到 mywebsite.com/test 显示 test.blade.php 的内容

我知道我需要对虚拟主机文件进行一些处理,然后才能期望它起作用,但我在虚拟主机方面的经验有限,我有点不知所措。

我当前的文件如下所示

server {
listen *:80;
server_name mywebsite.com ;

root /var/www/mywebsite.com/web;

index index.html index.htm index.php index.cgi index.pl index.xhtml;

error_page 400 /error/400.html;
error_page 401 /error/401.html;
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 405 /error/405.html;
error_page 500 /error/500.html;
error_page 502 /error/502.html;
error_page 503 /error/503.html;
recursive_error_pages on;
location = /error/400.html {

internal;
}
location = /error/401.html {

internal;
}
location = /error/403.html {

internal;
}
location = /error/404.html {

internal;
}
location = /error/405.html {

internal;
}
location = /error/500.html {

internal;
}
location = /error/502.html {

internal;
}
location = /error/503.html {

internal;
}

error_log /var/log/ispconfig/httpd/mywebsite.com/error.log;
access_log /var/log/ispconfig/httpd/mywebsite.com/access.log combined;

location ~ /\. {
deny all;
access_log off;
log_not_found off;
}

location = /favicon.ico {
log_not_found off;
access_log off;
}

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

location /stats/ {

index index.html index.php;
auth_basic "Members Only";
auth_basic_user_file /var/www/clients/client1/web5/web/stats/.htpasswd_stats;
}

location ^~ /awstats-icon {
alias /usr/share/awstats/icon;
}

location ~ \.php$ {
try_files /5e26a1d85cb98f7191261e023385e60d.htm @php;
}

location @php {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/lib/php5-fpm/web5.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
}
}

现在在另一台服务器上我可以使用这个简单的指令

server {
root /var/www/public;
index index.php index.html index.htm;
server_name localhost;

location / {
try_files $uri $uri/ /index.php$is_args$args;
}
}

但是我只能使用当前服务器上的虚拟主机做一些事情,因为 ISPconfig 为我编写了大部分内容,并且它拒绝编写在其他地方工作的上述配置。另外,我觉得直接编辑文件是不好的做法,我总是担心 ISPconfig 会为我重写文件,所以我不太确定如何最好地继续这样做。

我的选择是继续编辑虚拟主机并希望得到最好的结果,但如果我这样做,我如何确保 ISPconfig 无法在不诉诸“hacky”方法的情况下覆盖该文件?

或者,是否有一个我可以通过 ISPconfig 输入的配置,允许以适合 Laravel 的方式正确进行重写?在这种情况下,输入的任何指令都需要优先于 ~ .php$ 子句,因为该子句是由 ISPconfig 在通过控制面板输入的任何指令之前编写的。

最佳答案

我最近也遇到了同样的问题。挖掘 ISPConfig 的来源,我了解到它可以插入/合并/删除默认虚拟主机文件的位置 block 。所以我做了以下事情:

网站菜单 > 选择网站 > 选项

然后我在“nginx Directives”字段中输入以下内容:

# redirect stuff to the public inner folder
location / {
root {DOCROOT}/public;
try_files /public/$uri /public/$uri/ /public/index.php?$query_string;
}

# merged the stuff people suggests for laravel inside the php block
# mind the 'merge' keyword that did the trick
location ~ \.php$ { ##merge##
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}

关于vhosts - ISPConfig Vhost 允许 Laravel 中的干净 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31814376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com