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