質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

543閲覧

railway.appでデプロイしたら/loginのルーティングが404エラーを発生する

sasame

総合スコア2

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2022/10/12 10:37

編集2022/10/23 11:52

前提

heroku無料枠が廃止されるとのことなので、作ったアプリケーションをrailway.appに移行しようとしています。アプリのデプロイ自体は成功しましたが、/login のルーティングでログインページにアクセスしたときに、
404 not found The requested URL was not found on this server. となりアクセスできません。/registerも同様です。

各ページはlaravel/uiにて作成されるスカフォールドで、特に弄っていません。
ローカル環境ではルーティングは共に機能しています。

[railway.appデプロイ後]
イメージ説明[php artisan serveで立ち上げた場合]イメージ説明

実現したいこと

login, registerの各認証ページを機能させたい。また、その原因を特定したい。

発生している問題・エラーメッセージ

railway.appのデプロイログ

10.10.10.14 - - [12/Oct/2022:09:39:43 +0000] "GET /login HTTP/1.1" 404 460 "https://equipment-production.up.railway.app/"; "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"

該当のソースコード

PHP

1<?php 2 3/* 4|-------------------------------------------------------------------------- 5| Web Routes 6|-------------------------------------------------------------------------- 7| 8| Here is where you can register web routes for your application. These 9| routes are loaded by the RouteServiceProvider within a group which 10| contains the "web" middleware group. Now create something great! 11| 12*/ 13 14Auth::routes(); 15Route::get('/home', 'HomeController@index')->name('home'); 16 17Route::get('/', function () { 18 return view('welcome'); 19}); 20//全ユーザに許可 21 22Route::group(['prefix'=>'equipment','middleware'=>['auth','can:user-higher']],function(){ 23 Route::get('index','EquipmentController@index')->name('equipment.index'); 24 Route::get('create','EquipmentController@create')->name('equipment.create'); 25 Route::post('store','EquipmentController@store')->name('equipment.store'); 26}); 27//管理者以上 28Route::group(['prefix'=>'equipment','middleware'=>['auth','can:admin-higher']],function(){ 29 Route::post('index','EquipmentController@index')->name('equipment.index'); 30 Route::get('edit/{id}','EquipmentController@edit')->name('equipment.edit'); 31 Route::post('update/{id}','EquipmentController@update')->name('equipment.update'); 32 Route::post('destroy/{id}','EquipmentController@destroy')->name('equipment.destroy'); 33 Route::post('accept/{id}','EquipmentController@accept')->name('equipment.accept'); 34 Route::post('select/{id}','EquipmentController@select')->name('equipment.select'); 35 36}); 37 38Route::group(['prefix' =>'lending','middleware' =>['auth','can:admin-higher']],function(){ 39 Route::get('index','LendingController@index')->name('lending.index'); 40 Route::post('store','LendingController@store')->name('lending.store'); 41 Route::get('edit/{id}','LendingController@edit')->name('lending.edit'); 42 Route::post('destroy/{id}','LendingController@destroy')->name('lending.destroy'); 43 Route::post('update/{id}','LendingController@update')->name('lending.update'); 44}); 45 46Route::group(['prefix'=>'authorizer','middleware'=>['auth','can:admin-higher']],function(){ 47 Route::match(['get','post'],'index','AuthorizerController@index')->name('authorizer.index'); 48 Route::post('create','AuthorizerController@create')->name('authorizer.create'); 49 Route::post('store','AuthorizerController@store')->name('authorizer.store'); 50 Route::post('destroy/{id}','AuthorizerController@destroy')->name('authorizer.destroy'); 51}); 52 53Route::group(['prefix'=>'user','middleware'=>['auth','can:admin-higher']],function(){ 54 Route::match(['get','post'],'index','UserController@index')->name('user.index'); 55 Route::post('create','UserController@create')->name('user.create'); 56 Route::post('store','UserController@store')->name('user.store'); 57 Route::post('destroy/{id}','UserController@destroy')->name('user.destroy'); 58}); 59//開発者以上 60Route::group(['prefix'=>'equipment','middleware'=>['auth','can:system-only']],function(){ 61 // 62}); 63

PHP

1<?php 2 3namespace App\Http\Controllers\Auth; 4 5use App\Http\Controllers\Controller; 6use App\Providers\RouteServiceProvider; 7use Illuminate\Foundation\Auth\AuthenticatesUsers; 8 9class LoginController extends Controller 10{ 11 /* 12 |-------------------------------------------------------------------------- 13 | Login Controller 14 |-------------------------------------------------------------------------- 15 | 16 | This controller handles authenticating users for the application and 17 | redirecting them to your home screen. The controller uses a trait 18 | to conveniently provide its functionality to your applications. 19 | 20 */ 21 22 use AuthenticatesUsers; 23 24 /** 25 * Where to redirect users after login. 26 * 27 * @var string 28 */ 29 protected $redirectTo = RouteServiceProvider::HOME; 30 31 /** 32 * Create a new controller instance. 33 * 34 * @return void 35 */ 36 public function __construct() 37 { 38 $this->middleware('guest')->except('logout'); 39 } 40 41 public function username(){ 42 return 'name'; 43 } 44 45}

試したこと

■認証のルーティングは設定できているか?
イメージ説明
railway run php artisan route:listで確認しましたが、設定はできているように見えます。

■Auth::routesの記述順序の問題?
上述のコードにもあるように、先頭にもってきていますが動いていません。

■vendorファイルがgitignoreで無視されるから、本番環境でだけ動かない?
→認証のルーティングを手書きしてみましたが効果なしでした

PHP

1// Auth::routes(); 2Route::get('/home', 'HomeController@index')->name('home'); 3Route::get('login','Auth\LoginController@showLoginForm')->name('login'); 4Route::post('login','Auth\LoginController@login'); 5Route::post('logout','Auth\LoginController@logout')->name('logout'); 6 7Route::get('register','Auth\RegisterController@showRegistrationForm')->name('register'); 8Route::post('register','Auth\RegisterController@register'); 9 10Route::get('/', function () { 11 return view('welcome'); 12});

■login.blade.phpの位置が間違っている?
イメージ説明

恥ずかしながらスタックしてしまったので、ヒントを頂ければ幸いです。

補足情報(FW/ツールのバージョンなど)

Laravel Framework 7.30.6
PHP 8.0.18
laravel/ui v2.5.0
Railway.app

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。
apacheの設定でmod_rewriteが有効になっていませんでした。

DokerFileに以下追加したら動きました。
RUN cd /etc/apache2/mods-enabled
&& ln -s ../mods-available/rewrite.load

投稿2022/10/23 02:52

sasame

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問