php - laravel 404 error when deploying live - php

I'm getting a 404 error when I'm deploying my project on a live server. I'm getting a laravel page saying Sorry, the page you are looking for could not be found. so I know it is reaching my project.
I ran php artisan config:cacheand php artisan route:cacheto register my routes and cache, but it still isn't changing. not really sure why I'm getting this error. My document root in my vhost is set to my public folder as well.
Steps I took to deploy
cloned my project from git
changed branch to my develop branch
made my permissions for the project 777 (I know its wrong by I just wanted to get it to deploy and see if it had bugs)
pointed my vhost to project/public
added .env (was using it in previous deployment)
composer install
composer update
php artisan config:cache
php artisan route:cache
vhost
<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot /var/www/html/API/public
#DocumentRoot /var/www/API/public/
ServerName api.app.io
ServerAlias api.app.io
ErrorLog ${APACHE_LOG_DIR}/api-error.log
CustomLog ${APACHE_LOG_DIR}/api-access.log combined
<Directory "/var/www/API/public">
#Options +Includes
#Options +FollowSymLinks -Indexes
Options All
AllowOverride All
Require all granted
</Directory>
SSLCertificateFile /etc/letsencrypt/live/api.app.io/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/api.app.io/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/api.app.io/chain.pem
</VirtualHost>
</IfModule>
.htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# 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]
# Handles JWT middleware
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
</IfModule>

Try to change php version in your hosting panel.

Related

Why new Route in Laravel v6.9.0 is not working? Vindows 10 - XAMPP v3.2.4 (64bit)

I'm first time working in Laravel.
I've installed composer.
Installed Laravel v6.9.0 in Windows 10 with XAMPP v3.2.4 (64bit), and
PHP v7.3.12.0
im cute files from public folder in root and public folder delete
My test .htaccess by
htaccess_tester had worked
The test for mod_rewrite shows it is enabled and working
httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so
In my check to Apache httpd.conf with all AllowOverride None changed to AllowOverride All
and appended end file httpd.conf file:
<Directory "C:/xampp/htdocs/Laravel Project/moda.local">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
Allow from All</Directory>
my .htaccess code:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# 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>
My routes.php in code:
Route::get('/', function () {return view('welcome');});
Route::get('/test1', function () {return 'test1';});
Route::get('test2', function () {return 'test2';});
my VirtualHost in c:/xampp/apache/conf/extra/httpd-vhosts.conf:
<VirtualHost *:80>
ServerName moda.local
DocumentRoot "C:/xampp/htdocs/Laravel Project/moda.local"
SetEnv APPLICATION_ENV "development"
<Directory "C:/xampp/htdocs/Laravel Project/moda.local">
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory></VirtualHost>
My URL:
-this url worked no problem show laravel first page
http://moda.local/
-this url not work error > 404 not found
http://moda.local/test1
-this url not work error > 404 not found
http://moda.local/test2

Laravel 5.6 deployed application routes give 404 error

I have deployed an application to an apache server and it works fine, well only the homepage. As soon as I try to go to a route I get the Not found error in my request log I see GET /users 404
My virtual host file:
<VirtualHost *:80>
SetEnv ENVPHP acc
ServerName someurlblabla.com
DocumentRoot "/var/www/html/projectname/public"
<Directory "/var/www/html/projectname/public">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from All
</Directory>
</VirtualHost>
The .htaccess file is just the default laravel one with apache being able to access and read it.
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
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}]
</IfModule>
I'm a bit lost since I don't get any errors in my log and I have no idea what is going on.
what's about this:
<VirtualHost *:80>
SetEnv ENVPHP acc
ServerName someurlblabla.com
DocumentRoot "/var/www/html/projectname/public"
<Directory "/var/www/html/projectname">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from All
</Directory>
</VirtualHost>
Probably you don't wanna hear this, but switching to Nginx will solve a lot of these problems , and your site will run faster. That's why Laravel Valet uses Nginx.

Laravel auth not working change mysite.com/index.php to mysite.com

I set up a local Laravel server for developement and push changes through Git to my production server.
I made a new Laravel project that i pused ok. Then i added php artisan make:auth on my local server and pushed to production but get 404 cant find login (or register). After some work I found out that:
www.mySite.com/login
can not be found but if I write
www.mySite.com/index.php/login it works.
So now I think I have to modify my htaccess to ignore the index.php but I cant get it to work. I tried some suggestions but none seems to work and I don't have a clue why it is not working.
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteBase Test/public/
* RewriteCond %{THE_REQUEST} /index\.php [NC]
* RewriteRule ^(.*?)index\.php$ /$1 [L,R=302, NC, NE]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^(.*)/$ /$1 [L,R=301]
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}]
</IfModule>
The two lines marked with * I tried to add after reading a suggestion here on Stack Overflow (cant find the link now). I also tried
htaccess remove index.php from url
this suggestion.
Any ideas? Thanks.
Edit:
My sites-enabled/000-default.conf looks like this:
<VirtualHost *:80>
ServerAdmin webmaster#localhost
DocumentRoot /var/www/html/Test/public
<Directory /var/www/html/Test/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =nfoscan.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
and my 000-default-le-ssl.conf Looks like this:
<IfModule mod_ssl.c>
<VirtualHost *:443>
# The ServerName directive sets the request scheme, hostname and port that
ServerAdmin webmaster#localhost
DocumentRoot /var/www/html/Test/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /etc/letsencrypt/live/mysite.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mysite.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
ServerName mysite.com
</VirtualHost>
</IfModule>
I removed the comments in configs..
I tried to add
<Directory /var/www/html/Test/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
to my 000-default-le-ssl.conf but it resulted in internal server error..
First check if your apache has enabled mod_rewrite you can do it easily by
typing
apache2 -M
or even simpler:
a2enmod rewrite
if you had enabled it already you will receive message:
"Module rewrite already enabled"
If you haven't then you will receive message:
"Enabling module rewrite". You will have to restart apache.
Check if you have in you htaccess line (AllowOverride All)
<Directory /var/www/html/project/>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Ok so I fixed it. There was some problem in my .htaccess file. I started with removing the .htaccess file in /Test/public and then I didnt get internal server error when messing with in 000-Default-le-ssl.conf file anymore. Then I just copied in another .htaccess file in the directory and it all worked as it should :O
Thanks to all who tried to help me!
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# 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]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
Posting the working .htaccess file if anyone ever have this problem again :)

.htaccess setting: Laravel Page redirect is not working

Here's is My Laravel-5.4 code that i am facing problem. I had created test laravel project with two pages home & about us and mapped the file path using Apache v-host(www.test.com)
When i hit www.test.com it loads correctly to the index page but when i try to hit www.test.com/about It showing 404 error .But when i hit like this url www.test.com/index.php/about page loads properly
I don't know its problem is in my code or Apache configuration or any other
controller:
public function index(){
return view('pages.index');
}
public function about(){
return view('pages.about');
}
Route :
// Home Page
Route::get('/','pagesController#index');
// About Us Page
Route::get('/about','pagesController#about');
Apache conf:
ServerAdmin webmaster#localhost
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/html/test/public/
.htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
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}]
</IfModule>
You probably have an issue with mod_rewrite that is not enabled.
Try to enable it with a2enmod rewrite and then restart apache /etc/init.d/apache2 restart
Give a look to that answer.
OR
If it's not working.
This may come from Apache conf : etc/apache2/httpd.conf.
This article will explain it better than me.
You may need to edit :
<Directory "/var/www/html">
...
AllowOverride None
...
</Directory>
To
<Directory "/var/www/html">
...
AllowOverride All
...
</Directory>
And restart apache /etc/init.d/apache2 restart
OR
If it's still not working try to do some chmod 0755 on your Laravel's project.
Do you have mod_rewrite installed and enabled on apache?
In order to use mod_rewrite you can type the following command in the terminal:
a2enmod rewrite
Restart apache2 after
/etc/init.d/apache2 restart
or
service apache2 restart
This is the .htaccess I have on my public/ directory:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Also, editing /etc/apache2/sites-enabled/000-default
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

Laravel setting vhosts on XAMPP for pretty urls (routing issue)

I use XAMPP localhost server and I recently got into possession of a introductory book regarding Laravel. I'd like to configure it propery but I stumbled upon a rock.
I don't know much about routing, but I enabled mod_rewrite, and included opt/lampp/etc/extra/httpd-vhosts.conf in /opt/lampp/etc/httpd.conf using the setting that Dayle Rees recommends, that is:
<VirtualHost *:80>
ServerName my_project
DocumentRoot /opt/lampp/htdocs/my_project/public
CustomLog /opt/lampp/htdocs/my_project/app/storage/logs/access.log common
ErrorLog /opt/lampp/htdocs/my_project/app/storage/logs/error.log
<Directory /opt/lampp/htdocs/my_project/public>
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot opt/lampp/htdocs/choqlet/
ServerName choqlet
ServerAlias localhost/choqlet
</VirtualHost>
After i've done this, due to the rerouting, I do have an access to the laravel files, but when I want to access my other projects on the localhost, I constantly get redirected to the Laravel's index. Here's the .htaccess file contents from laravel's public folder:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
I guess that I'm doing something totally wrong here or Rewrite rules are just screwed?

Categories