Use .htaccess file on an apache localhost server

2020-02-23 00:35发布

问题:

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

回答1:

.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


回答2:

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


回答3:

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.



回答4:

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>