将PHP站点上传到Web,只有索引页面可用

时间:2016-09-26 12:00:23

标签: php laravel hosting production

我第一次将我的网站上传到ipage主机。 没有public_html文件夹,根目录实际上是公共的,因此我将所有网站文件夹上传到它,并仅向我的公共文件提供开放查看权限。 现在我的主页正在工作,其余部分都没有,我认为它与文件的位置有关,现在与本地文件的位置不同,因为ipage目录的结构。我得到的错误是找不到页面'。

这是我的route.php文件的一个例子:

Route::get('/', 'PagesController@index');
Route::get('store', 'StoreController@index');

(主页有效,商店没有)。

控制器示例:

class PagesController extends MainController
{
public function index()
{   
    self::$data['title'] = 'Ayala & Tamar | Home Page';
    return view('content.home', self::$data);       
}


 class StoreController extends MainController
{
//Getting dynamic categories
public function index()
{ 
 self::$data['title'] = 'Ayala & Tamar | Store';
 self::$data['categories'] = Category::all()->toArray();
 return view('content.categories', self::$data);   
}

我的所有Laravel和PHP结构保持不变并位于主项目目录中,除了不再位于公共文件夹中的公共文件外,它们直接位于主目录中。

有没有人有解决方案的想法? 谢谢!

2 个答案:

答案 0 :(得分:3)

像这样设置路线,所以你的route.php文件看起来像这样

Route::controllers([
  'store' => 'StoreController'
]);

Route::get('/', 'HomeController@index');

您的控制器

class StoreController extends Controller
{
  public function getIndex(Request $request)
  {
    self::$data['title'] = 'Ayala & Tamar | Store';
    self::$data['categories'] = Category::all()->toArray();
    return view('content.categories', self::$data);   
  }
}

答案 1 :(得分:0)

从第一件事出现在我脑海中:你没有将所有请求重定向到index.php

如果您使用的是 apache ,请检查 .htaccess 文件和 mod_rewrite 扩展名,如果您使用的是nginx检查网站配置。它必须正确地将所有请求重定向到index.php,否则您的请求将不会在索引之外工作。

来自新鲜laravel 5.3的

.htaccess文件

RewriteEngine On

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

对于nginx,您应该在您的站点配置文件中使用以下内容:

try_files $uri $uri/ /index.php?$query_string;

location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

当然nginx配置可以不同。阅读手册并正确配置。