一个客户请求建立一个网站,现在它已经建立,他们已经请求它与他们现有的网站一起托管,但在一个子目录(example.com/example/path
)。
我现在要处理的是找出正确托管它所需的apache规则。我已经将整个项目结构上传到该目录中。在public目录(/example/path/public
)中,我有以下.htaccess文件(以下我将把它称为Laravel.htaccess):
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteBase /example/path
# 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]
# Serve Cached Page If Available...
RewriteCond %{REQUEST_URI} ^/?$
RewriteCond %{DOCUMENT_ROOT}/page-cache/pc__index__pc.html -f
RewriteRule .? page-cache/pc__index__pc.html [L]
RewriteCond %{DOCUMENT_ROOT}/page-cache%{REQUEST_URI}.html -f
RewriteRule . page-cache%{REQUEST_URI}.html [L]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
<FilesMatch ".(jpg|jpeg|png|gif|ico|svg|woff|woff2|ttf|eot|otf)$">
Header set Cache-Control "max-age=2628000, public"
</FilesMatch>
<FilesMatch ".(css|js)$">
Header set Cache-Control "max-age=86400, public"
</FilesMatch>
我已经添加了RewriteBase
行基于我试图找到一个解决方案,这一点。
在基本的.htaccess文件(/example/path/.htaccess
)中,我有以下内容:
<IfModule mod_alias.c>
Alias /example/path /home/www/<user>/html/example/path
<Directory "/home/www/<user>/html/example/path">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</IfModule>
但是问题是这会返回一个内部服务器错误。我尝试过其他可能的解决方案,这些解决方案不使用Alias
,而是返回40X错误。
我需要在用户访问example.com/example/path
时能够让Laravel站点完全正常工作。在过去的90分钟里,我尝试了许多解决方案,但没有一个成功。
我的情况的 * 正确 * 解决方案是什么?
3条答案
按热度按时间eufgjt7s1#
在公共文件夹中,我们托管了8个平台,每个平台的根目录都有
.htaccess
配置。希望这对您有所帮助。tgabmvqs2#
我最近也这样做了。我的客户将他们的WordPress设置为解析为文档根目录(/var/www/html),但他们也希望他们的Laravel应用程序“安装”在WordPress的一个子文件夹中,并命名为“hq”
但是这将是一个安全问题,因为我们只想公开Laravel的公共文件夹,而不是应用程序文件。为了解决这个问题,我使用了符号链接的力量!
Laravel应用程序位于文档根目录下:
然后,我使用命令“ln -s symlinkLocation symbolic-link-name”公开了DocumentRoot中Laravel的公共文件夹
在上面一行中,您可以看到“hq”不是实际的文件夹,而是指向/var/www/laravel/public的符号链接
(这是Laravel的index.php入口点所在的位置,css、js等)x1c 0d1x
符号链接如下所示:
我还制作了一个指向存储文件夹的符号链接:
它实现了“php artisan storage:link”所实现的功能。
作为参考,下面是我的laravel .htaccess的外观:
在/var/www/laravel/public/.htaccess中的.htaccess是
希望这对你有帮助
djmepvbi3#
在项目根目录下创建htaccess文件
并添加以下行: