Any LAMP (Linux Apache MySQL PHP) web development effort requires fully functional Linux web server. You can also develop using LAMP installation on other operating systems but that just isn't the real thing. The way I develop is by using Ubuntu LAMP local server I can play with without fear of cutting off hundreds of people from any public site just because I've typed colon instead semicolon somewhere in some php file. If you want to know how to setup Ubuntu Linux for your development work here's one of my earlier articles on that topic:
In this article I will show you how to enable Apache mod_rewrite engine on your Ubuntu LAMP installation. This module is used by web administrators to "mask" their site URLs into the form they want users to see. This is done because it is not necessary or secure to expose your site innerworkings like GET parametars or scripts paths on your server.
mod_rewrite is also used by WordPress for the permalinks feature. So if you are testing WordPress locally and you want to enable permalinks feature you must enable mod_rewrite on your local server. 404 page displayed when you try to access any WordPress page or post after enabling permalinks is there to remind you to enable mod_rewrite.
In this article I will mostly write like you've followed my LAMP setup article where I've shown you how to setup Ubuntu LAMP server with document root in your own home directory. First we will enable mod_rewrite using following command:
sudo a2enmod rewrite
mod_rewrite rules are usually specified using hidden .htaccess file used to override global server settings for particular web site. In the default Ubuntu LAMP web site configuration file this override isn't allowed . Because of that we must open our site config file and change
AllowOverride directive for our site document root from
If you've followed my LAMP setup article you will use this command to open your site config file:
gksudo gedit /etc/apache2/sites-available/public_html
If you've been using default Ubuntu LAMP server config file with document root in
/var/www you will use this command:
gksudo gedit /etc/apache2/sites-available/default
If you've been using Apache 2 userdir module (you can read my article on how to enable userdir Apache module) you should edit this file:
gksudo gedit /etc/apache2/mods-enabled/userdir.conf
If you've copied the default site configuration into your own configuration file you must open that configuration file. In this case you should explore
/etc/apache2/sites-available/ directory to see all available web site configurations so you could open the right one.
Now let's change
AllowOverride directive for your site document root from
All. If you've followed my LAMP setup article you will find this directive on the line 11 from the
public_html file we've opened in the last step.
public_html file is displayed inside the following code block:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /home/marko/public_html <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /home/marko/public_html/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /home/marko/public_html/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /home/marko/public_html/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost>
Now we need to restart Apache server to apply our new settings:
sudo service apache2 restart
That's it. Now feel free to have fun developing using your Ubuntu Linux system!