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:
npm install
.ng build --prod
command and it created a dist
directory.apache
root to /var/www/html/dist
directory.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?
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.
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.
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.
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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With