Php .htaccess用于安装在子文件夹中的Laravel应用程序
我有一个域名,比如Php .htaccess用于安装在子文件夹中的Laravel应用程序,php,laravel,.htaccess,Php,Laravel,.htaccess,我有一个域名,比如www.example.com 主站点位于FTP空间中,显示为/example.com 我在/example.com/Laravel_app下安装了(复制/粘贴,叹息…:()我的Laravel app) 如果我使用完整的urlhttp://www.example.com/laravel_app/public/index.php 问题是,很明显,我只想使用路径http://www.example.com/laravel_app 在laravel\u应用程序的根目录中,我尝试粘贴此
www.example.com
主站点位于FTP空间中,显示为/example.com
我在/example.com/Laravel_app
下安装了(复制/粘贴,叹息…:()我的Laravel app)
如果我使用完整的urlhttp://www.example.com/laravel_app/public/index.php
问题是,很明显,我只想使用路径http://www.example.com/laravel_app
在laravel\u应用程序的根目录中,我尝试粘贴此.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
因此,我的问题与应用程序公用文件夹的.htaccess
无关,而是与应用程序根文件夹的.htaccess
有关
我怎样才能成功地服务
http://www.example.com/laravel_app/public/index.php
访问
http://www.example.com/laravel_app
?
事实上我让拉威尔退回了404
我尝试了这个变体(看到了一些与此非常相似的问题)
重新启动发动机
重写cond%{REQUEST_FILENAME}!-f
重写cond%{REQUEST_FILENAME}!-d
重写规则^(.*)$public/index.php/$1[L]
但是有了这个,我让apache返回了一个禁止的我假设您已经在共享主机上安装了您的应用程序,并且它运行的是apache,这个解决方案应该可以工作
将.htaccess恢复到原来的/与laravel一起部署的版本
理想情况下,您不应该让您的项目以公共html上传,因为它会将所有文件公开给web
将除public
之外的所有项目文件移动到public\u html
下面的目录中
例如
现在编辑laravel app
文件夹中的index.html
文件,并同时更改:
require\uuuu DIR\uuuu./../vendor/autoload.php';
$app=require\u once\uuuu DIR\uuuu./../bootstrap/app.php';
…以反映您移动YRU项目文件夹的路径
require\uuuu DIR\uuuu./../laravel/vendor/autoload.php';
$app=require\u once\uu DIR\uu.'/../../laravel/bootstrap/app.php';
本质上,在这个上下文中,。/
意味着返回一个文件夹,因此目的是将其返回到可以找到laravel/vendor/
文件夹的位置,反之亦然
实际上,这会解决您的问题,并使您的.env和composer等应用程序更安全。如果不影响您的.htaccess,文件将不会公开提供
哦,这里还有默认的.htaccess
代码,应该在您的公用文件夹下/public
:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# 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]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
选项-多视图-索引
重新启动发动机
#句柄授权头
RewriteCond%{HTTP:Authorization}。
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}!-d
重写cond%{REQUEST_URI}(+)/$
重写规则^1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}!-d
重写cond%{REQUEST_FILENAME}!-f
重写规则^index.php[L]
我假设您已经在共享主机上安装了应用程序,并且它运行的是Apache,那么这个解决方案应该可以工作
将.htaccess恢复到原来的/与laravel一起部署的版本
理想情况下,您不应该让您的项目以公共html上传,因为它会将所有文件公开给web
将除public
之外的所有项目文件移动到public\u html
下面的目录中
例如
现在编辑laravel app
文件夹中的index.html
文件,并同时更改:
require\uuuu DIR\uuuu./../vendor/autoload.php';
$app=require\u once\uuuu DIR\uuuu./../bootstrap/app.php';
…以反映您移动YRU项目文件夹的路径
require\uuuu DIR\uuuu./../laravel/vendor/autoload.php';
$app=require\u once\uu DIR\uu.'/../../laravel/bootstrap/app.php';
本质上,在这个上下文中,。/
意味着返回一个文件夹,因此目的是将其返回到可以找到laravel/vendor/
文件夹的位置,反之亦然
实际上,这会解决您的问题,并使您的.env和composer等应用程序更安全。如果不影响您的.htaccess,文件将不会公开提供
哦,这里还有默认的.htaccess
代码,应该在您的公用文件夹下/public
:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# 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]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
选项-多视图-索引
重新启动发动机
#句柄授权头
RewriteCond%{HTTP:Authorization}。
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}!-d
重写cond%{REQUEST_URI}(+)/$
重写规则^1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}!-d
重写cond%{REQUEST_FILENAME}!-f
重写规则^index.php[L]
参考此参考此
/home/<username>
[laravel] <-- Make this directory
[public_ftp]
[public_html]
[ssl]
etc..
/home/<username>/public_html/laravel-app
[public_html]
[laravel-app]
-index.html
-robots.php
-.htaccess
-[css]
-[js]
-[svg]
etc..
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# 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]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>