Laravel应用程序在子目录中

时间:2018-04-27 06:06:25

标签: php laravel .htaccess mod-rewrite

laravel应用程序似乎在服务器上有子目录的路由问题。在本地计算机上运行的应用程序无法在实时服务器上的子目录中的临时域上运行。围绕.htaccess玩游戏似乎有不同的结果。

This question几乎与我想要的完全相同,但在我有一些解决方法时他没有得到任何解决方案。

laravel .htaccess中的public已被修改为:

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

RewriteEngine On

RewriteBase /~timely/email-client  //<--base has been modified
# 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>

The application会将您重定向到host gator 404 page

此外,我已将.htaccess添加到主目录,该目录会将每个请求转发到public目录。

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

删除主页/主 .htaccess只适用于/路由:例如

http://gator4057.temp.domains/~timely/email-client/public可以使用,但所有其他路线都会重定向到同一个主机gator 404页面

您的意见和回答将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

第1步。将所有电子邮件客户端/公共广告移至email-client /。现在我们到了某个地方。警告:不要忘记复制.htaccess文件

第2步。在您喜欢的编辑器中打开email-client / index.php并更改

$app = require __DIR__.'/../bootstrap/app.php';

$app = require __DIR__.'/../email-client/bootstrap/app.php';
or may be
$app = require __DIR__.'/email-client/bootstrap/app.php';

并改变:

require __DIR__.'/../bootstrap/autoload.php'

require __DIR__.'/../laravel/bootstrap/autoload.php'
or may be
require __DIR__.'/laravel/bootstrap/autoload.php'

运行命令:

php artisan cache:clear  
php artisan config:clear
php artisan optimize
  

OR

如果您不想做更多更改,请尝试以下方法:

将它放在index.php文件中

$app->bind('path.public', function() {
    return __DIR__;
}

希望为你工作。