无法打开子目录 laravel 安装

Unable to open subdirectory laravel installation

在我的 /public_html/ 中,我安装了一个 WordPress 站点。现在我已经在 /public_html/app/.

中安装了一个 laravel 应用程序

然后在/public_html/app/.htaccess我添加了:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ public/ [L]
</IfModule>

/public_html/app/public/.htaccess中我添加了:

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On    
    RewriteBase /app/

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule . index.php [L]
</IfModule>

当我尝试打开 https://example.com/app/ 时出现错误 404。当我尝试直接打开时 https://example.com/app/public 我有一半的工作站点,因为它正在搜索 css/images 在 https://example.com/.

htaccess 秒内需要更改哪些内容才能正常工作。

目标是在主 WP 站点上有一个按钮,当我单击它时加载 laravel 站点。

RewriteBase /app/

您需要删除 RewriteBase 指令。这最终将请求重写为 /app/index.php,而它应该是 /app/public/index.php。默认是重写到当前目录(包含.htaccess文件的目录),所以这里不需要RewriteBase指令。

(或者,您可以将其“正确”设置为 RewriteBase /app/public - 但这不是必需的,然后会将此安装硬编码到 /app 目录。)

I've got half working site because it is searching for the css/images in https://example.com/

这取决于你的图像在哪里。如果图片位于 /app/public/assets/images/myimage.jpg,那么您应该使用 root-relative URL(以斜线开头)引用您的图片,不包括 public 目录,例如。 href="/app/assets/images/myimage.jpg".


更新:

is this means that I now have to manually edit all images, links, buttons, etc on the site in order to add /app/... in front of the assets?

通常是的。以同样的方式,您大概在所有指向您页面的内部链接之前添加了 /app/。 (?)

Logo for example - <img src="/assets/main/img/logo.png">

但是,由于您使用的是 root-relative URL 并且您的 Laravel 资产位于已知位置,因此您可以通过在根目录(WordPress ) .htaccess 文件以将您的 Laravel 资产重写到正确的位置(大概是 /app/public/...)。

但是,这确实意味着您不能在根目录中有一个 /assets 子目录(如果不执行额外的文件系统检查),也不会有一个以 /assets 开头的 WordPress URL,因为它会发生冲突并且无法访问。

例如,在 /.htaccess 文件的顶部, 任何其他 WordPress 指令之前,您可以执行如下操作:

# Rewrite Laravel assets to the correct location
RewriteRule ^assets/.+ app/public/[=11=] [L]

# BEGIN WordPress
:

其中 [=31=] 是一个反向引用,它包含与 RewriteRule 模式 .

匹配的整个 URL-path

现在,任何对 /assets/<something> 的请求都将在内部重写为 /app/public/assets/<something>/assets/本身不会被重写。