Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Deploy Angular 2 to Apache Server

Tags:

I want to deploy an Angular 2 application on an Apache server. I've read various guides like this and this but none of them is working. I have npm and ng installed on the server.

In a nutshell, here's what I did:

  1. Cloned complete project repository on my server.
  2. Installed dependencies using npm install.
  3. Used ng build --prod command and it created a dist directory.
  4. Changed apache root to /var/www/html/dist directory.
  5. Enabled mod_rewrite, restarted apache and added this .htaccess in my dist directory.
<IfModule mod_rewrite.c>     RewriteEngine On     RewriteBase /     RewriteRule ^index\.html$ - [L]     RewriteCond %{REQUEST_FILENAME} !-f     RewriteCond %{REQUEST_FILENAME} !-d     RewriteRule . /index.html [L] </IfModule> 

But only my home page domain.com works, other pages like domain.com/login, domain.com/register etc. throw 404 error. Even domain.com/index.html/login doesn't work.

The application works fine on my local system where I'm developing it using ng serve. What am i missing?

like image 633
Kanav Avatar asked Mar 27 '17 04:03

Kanav


People also ask

Can we run Angular in Apache server?

We need to achieve 2 tasks: =>Serve the angular application from the Apache Server. =>The Apache Server must compress the contents of the angular build before serving it in the browser. To achieve these tasks, we need to make a few changes to the Apache24/conf/httpd.

What is runtime JS in Angular?

js : third-party code that your application depends on. polyfills. js : polyfills that allow using newer features in older environments (e.g., using Angular on outdated Web browsers) runtime. js : utility code used by Webpack to load code at runtime.

What is index html in Angular?

Angular is a framework which allows us to create "Single Page Applications", and here the index. html is the single page which was provided by the server.


1 Answers

Create .htaccess file in the root folder and paste this in .htaccess

 <IfModule mod_rewrite.c>   RewriteEngine On   RewriteBase /   RewriteRule ^index\.html$ - [L]   RewriteCond %{REQUEST_FILENAME} !-f   RewriteCond %{REQUEST_FILENAME} !-d   RewriteRule . /index.html [L] </IfModule> 
like image 77
Sumit Jaiswal Avatar answered Oct 19 '22 15:10

Sumit Jaiswal