已将 s PHP 站点上传到网络,只有索引页面有效
Uploaded a s PHP site to the web, only index page works
我第一次将我的网站上传到 ipage 主机。
没有 public_html 文件夹,根目录实际上是 public 所以我将我所有的网站文件夹上传到它,并且只允许打开我的 public 文件。
现在我的主页正在运行,而其余的则没有,我认为这与文件的位置有关,由于 ipage 目录的结构,现在与本地文件的位置不同。我得到的错误是 '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 结构都保持不变并且位于主项目目录中,除了 public 文件不再位于 public 中文件夹,它们直接位于主目录中。
有人有解决方案吗?
谢谢!
像这样设置路由,所以你的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,否则你的请求将无法工作,除了 index.
.htaccess 文件来自新鲜 laravel 5.3
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ / [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 配置可以不同。阅读手册并正确配置它们。
我第一次将我的网站上传到 ipage 主机。 没有 public_html 文件夹,根目录实际上是 public 所以我将我所有的网站文件夹上传到它,并且只允许打开我的 public 文件。 现在我的主页正在运行,而其余的则没有,我认为这与文件的位置有关,由于 ipage 目录的结构,现在与本地文件的位置不同。我得到的错误是 '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 结构都保持不变并且位于主项目目录中,除了 public 文件不再位于 public 中文件夹,它们直接位于主目录中。
有人有解决方案吗? 谢谢!
像这样设置路由,所以你的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,否则你的请求将无法工作,除了 index.
.htaccess 文件来自新鲜 laravel 5.3
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ / [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 配置可以不同。阅读手册并正确配置它们。