使用 Laravel/Inertia 导航到路径时找不到资源

问题描述 投票:0回答:1

我在自托管的 Ubuntu 服务器上部署了一个使用 Laravel 9、Inertia、Vue3 和 Apache2 的 Web 应用程序。通过拨打

mydomain.de
我可以轻松访问起始页。但是当我导航到域的任何路径时,例如
mydomain.de/settings
,我收到以下错误:

Not Found - The requested URL was not found on this server
Apache/2.4.41 (Ubuntu) Server at mydomain.de Port 443

例如,我发现当我调用

mydomain.de/index.php/settings
时,路径可以工作,但 URL 如下所示

mydomain.de/index.php/index.php/settings

本地路由工作完美。

AllowOverride All 在我的 Apache 配置中设置。

rewrite.load mod已启用。

Apache 服务已重新启动多次。

我还尝试了根文件夹和公共文件夹中不同的 .htaccess 文件。

这是我的文件:

/etc/apache2/sites-available/mydomain.de.conf

Listen 8081
<VirtualHost *:80, *8081>

    ServerAdmin [email protected]
    ServerName mydomain.de
    ServerAlias www.mydomain.de
    DocumentRoot /var/www/mydomain/public

    <Directory /var/www/mydomain/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

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

    Redirect "/" "https://mydomain.de"
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =www.mydomain.de [OR]
    RewriteCond %{SERVER_NAME} =mydomain.de
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R]
</VirtualHost>

/var/www/mydomain/public/.htaccess

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

Options +FollowSymLinks

RewriteEngine On
RewriteBase /mydomain/public/

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

# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>

routes/web.php

<?php

  use Illuminate\Support\Facades\Route;
  use Inertia\Inertia;

  Route::get('/', function () {
    return Inertia::render('Start', [
      'title' => 'Start'
    ]);
  });

  Route::get('/settings', function () {
    return Inertia::render('Settings', [
      'title' => 'Einstellungen'
    ]);
  });

我做错了什么?如果我可以添加任何其他文件以使我的设置更清晰,请随时告诉我。

如有任何帮助,我们将不胜感激。

laravel apache vuejs3 inertiajs
1个回答
0
投票

我今天遇到了这个麻烦,我意识到我没有跑

sudo a2enmod rewrite
。这对我有用

© www.soinside.com 2019 - 2024. All rights reserved.