Apache .htaccess <Directory not allowed here
Solution 1
<Directory>
directive is not allowed in .htaccess and for meeting your requirements you don't even need this in .htaccess.
You can use this rule in site root (parent) .htaccess
:
RewriteEngine On
RewriteCond %{QUERY_STRING} !(?:^|&)test=yes(?:&|$) [NC]
RewriteRule ^foo/(.*)$ bar/$1?test=yes [NC,QSA,L]
Solution 2
<Directory..
is not allowed in .htaccess
according to the manual. You can have it only in server config and virtual host. You should use mod_rewrite
instead.
Solution 3
Short answer: Just delete the .htaccess file and your error.log problem will vanish.
Longer answer:
I started getting the same message in my C:\xampp\apache\logs\error.log file earlier today. The error began suddenly (after years of using localhost without a hitch) and coincided with a "500 server error" when I tried to start localhost.
The content of the .htcaccess file (which had appeared in my /Sites directory for the first time today) was:
<Directory>
AllowOverride All
Order allow,deny
</Directory>
As others have noted in relation to similar .htcaccess questions, the file is not generally necessary.
I therefore simply deleted the .htcaccess file, which instantly solved the problem. Immediately localhost started working again, and the error vanished from the logs!
dodov
Updated on July 25, 2022Comments
-
dodov almost 2 years
I run XAMPP and I'm trying to learn how .htaccess works. I have a file structure that looks something like this:
/parent /foo /bar .htaccess
I simply want to change all
foo
requests tobar
with a GET parameter appended after them. For example:foo/ foo/hello.php
turn into:
bar/?test=yes bar/hello.php?test=yes
When I try to put the
<Directory>
directive in my .htaccess file:<Directory "/foo"> Options +Indexes </Directory>
I get the following error log:
[Tue Sep 19 17:23:58.356362 2017] [core:alert] [pid 6336:tid 1900] [client ::1:60018] C:/xampp/htdocs/parent/.htaccess: <Directory not allowed here
I checked my httpd.conf file and everything is alright. I'm sure because if I change the contents of the .htaccess file to simply:
Options -Indexes
It correctly displays a 403 error. If I replace the
-
with+
, it shows the directory listing.What am I doing wrong?
-
dodov over 6 yearsCan you show an example? How would I implement that to solve my problem? The manual gives examples with
<Directory>
. Maybe show an example solution to the problem in my question? -
dodov over 6 yearsI understand what the
RewriteRule
does and what the pattern in it matches, but can you explain whatRewriteCond
does? I can't understand what it checks. -
anubhava over 6 years
RewriteCond
uses a negation operator!
at the start which means execute this rule only whenQUERY_STRING
doesn't already havetest=yes
query parameter. query parameter might be at the start, middle or in end. That is why I have(?:^|&)
for start/middle and(?:&|$)
for middle/end positions.