上传一个PHP网站到网络,只有索引页工作


Uploaded a s PHP site to the web, only index page works

我第一次上传我的网站到一个网页托管。没有public_html文件夹,根目录实际上是公共的,所以我把我所有的网站文件夹上传到它,只给我的公共文件开放查看权限。现在我的主页可以正常工作了,而其他的则不行,我认为这与文件的位置有关,因为页面目录的结构,现在的文件位置与本地的文件位置不同了。我得到的错误是"Page not found"。

这是我的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结构保持不变,在主项目目录中,除了公共文件不再在公共文件夹中,它们直接在主目录中。

有人有解决方案吗?谢谢!

像这样设置路由,所以你的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);   
  }
}

我想到的第一件事是:您没有将所有请求重定向到index.php

检查。htaccess文件和mod_rewrite扩展名如果你使用apache,如果你使用nginx检查站点配置。它必须正确地将所有请求重定向到index.php,否则您的请求将无法工作。

。从fresh 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的配置可以是不同的。阅读手册并正确配置