John Sonderson
John Sonderson

Reputation: 3388

XAMPP .htaccess mod_rewrite not working

I am running XAMPP for Windows 5.6.11. I have the following PHP file:

C:\xampp\htdocs\www.johndoe.com\index.php

which I am accessing as

http://localhost/www.johndoe.com/

As a matter of fact I need to access the following page:

http://localhost/www.johndoe.com/?value=about

as either of the following two:

http://localhost/www.johndoe.com/about/
http://localhost/www.johndoe.com/about

so I have the following in my .htaccess file:

RewriteEngine on
RewriteRule ^www\.johndoe\.com/about/?$ www.johndoe.com/?value=about

However, this is not working, as accessing the former sites gives me a 401 (not found).

Here is what I have in C:\xampp\apache\conf\httpd.conf:

<Directory />
    AllowOverride none
    Require all denied
</Directory>

DocumentRoot "C:/xampp/htdocs"
<Directory "C:/xampp/htdocs">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

What must I do to get my .htaccess file to be parsed and carry out the substitution I'm after?

I have tried placing the following in C:\xampp\apache\conf\httpd.conf:

<Directory />
    AllowOverride all
    Require all allowed
</Directory>

but have had no luck with it. I have even tried changing my .htaccess file to the following:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteBase /www.johndoe.com/
RewriteRule ^about/?$ ?value=about

but I'm still getting the 404 not found error message.

Upvotes: 3

Views: 8845

Answers (1)

John Sonderson
John Sonderson

Reputation: 3388

As it turns out, with the default XAMPP configuration there is no need to C:\xampp\apache\conf\httpd.conf, hence no need to restart Apache as we are just making changes to C:\xampp\htdocs\www.johndoe.com\.htaccess. As this post on RewriteBase explains, we do not need RewriteBase since we will not use absolute paths in the destination links for .htaccess rules. Since relative links in these destination rules will be relative to the directory we are serving out of, we need delete the www.johndoe.com directory from the rule, as follows:

  • Place the .htaccess in ``C:\xampp\htdocs\www.johndoe.com`.

  • Place the following rewiterule in it:

      RewriteEngine on
      RewriteRule ^about/?$ index.php?value=about
    

Upvotes: 4

Related Questions