12

Alright, I got an Apache localhost server up and running with PHP and MySql. Now I want to be able to use a .htaccess file as well to use RewriteRule, But I'm at a loss where to put it.

I have these directories:

C:\dev\progs where Apache PHP and MySQL are stored, each in their own sub-directories, ie. C:\dev\progs\Apache and so on...

C:\dev\www where all the site files are stored.

I need to know where to put the .htaccess file, what configuration I need to do, and if what I'm my hopes and dreams are all for nothing.

Thanks

KFox
  • 1,166
  • 3
  • 10
  • 35
  • I thought `.htaccess` config should not be used if you have access to the server config file, which in this case, you do. – SeinopSys Jan 23 '13 at 22:05
  • yeah, I heard something about that too, I just find the config file a little confusing. I can also find a lot more tutorials on `.htaccess` files. – KFox Jan 23 '13 at 23:19

4 Answers4

15

Enable .htaccess on apache servers in localhost

1) Find your apache directly which uses the php installation .
2) Open your httpd.conf  with notepad, Which is located in the path \apache\conf directory
3) Find the code like below       
      #LoadModule rewrite_module modules/mod_rewrite.so
4) Remove # from above code


# AllowOverride controls what directives may be placed in .htaccess files.
 # It can be "All", "None", or any combination of the keywords:
 #   Options FileInfo AuthConfig Limit
 #
 AllowOverride All   <--- make sure this is not set to "None"


5) Save httpd.conf file
6) Restart your apache server
GIPSSTAR
  • 2,050
  • 1
  • 25
  • 20
  • Thanks. Just adding a small part to avoid Step 1 & 2 for WAMP users. Click on the WAMP icon, scroll to Apache. You will directly get the `httpd.conf` file to edit. – NewBee Apr 28 '18 at 12:23
14

.htaccess is a configuration file that should be stored where your page is. In short, it should be in c:\dev\www in Your case, but You should read this too. BTW don't forget to turn on mod_rewrite by deleting a hash from the line where it resides

LoadModule rewrite_module modules/mod_rewrite.so

and enable .htaccess by changing

AllowOverride None

to

AllowOverride All
Kitet
  • 855
  • 1
  • 10
  • 20
  • confirm that you have enabled the rewrite_module on Apache server and also check your httpd.conf file to make sure that there is no "#" i.e. commented at the beginning of this line LoadModule rewrite_module modules/mod_rewrite.so – Nagaraj Pujar Sep 14 '18 at 10:31
2

Try This.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /projectfolder/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /projectfolder/index.php [L]
</IfModule>
Rakhi Prajapati
  • 880
  • 1
  • 12
  • 24
1

You place .htaccess file in the web directory you want the code to control (and any sub directories). For a Rewrite, it typically goes in the root dir and acts upon the index.php page.

For example, if you put the .htaccess file in \dev\www\ directory, and your .htaccess file has something like RewriteRule ^(.*)$ /index.php?/$1 [L] this is a regex that is saying get all the characters in the URL and append them to the /index.php? script. The /$1 is a back reference in regex.

dmayo
  • 640
  • 6
  • 16