无法打开子目录 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/
本身不会被重写。
在我的 /public_html/
中,我安装了一个 WordPress 站点。现在我已经在 /public_html/app/
.
然后在/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
模式 .
现在,任何对 /assets/<something>
的请求都将在内部重写为 /app/public/assets/<something>
。 /assets/
本身不会被重写。