3

I have Apache 2.2.4 server with a lot of messages like this in the access_log:

::1 - - [15/May/2010:19:55:01 +0200] "OPTIONS * HTTP/1.0" 400 543
::1 - - [15/May/2010:20:22:17 +0200] "OPTIONS * HTTP/1.0" 400 543
::1 - - [15/May/2010:20:24:58 +0200] "OPTIONS * HTTP/1.0" 400 543
::1 - - [15/May/2010:20:25:55 +0200] "OPTIONS * HTTP/1.0" 400 543
::1 - - [15/May/2010:20:27:14 +0200] "OPTIONS * HTTP/1.0" 400 543

These are the "internal dummy connections" as explained on this page:

http://wiki.apache.org/httpd/InternalDummyConnection

The page also hits my main problem: "In 2.2.6 and earlier, in certain configurations, these requests may hit a heavy-weight dynamic web page and cause unnecessary load on the server. You can avoid this by using mod_rewrite to respond with a redirect when accessed with that specific User-Agent or IP address."

Well, obviously I cannot use UserAgent because I minimized the server signature, but I could use IP address. However, I don't have a clue what should the RewriteCond and RewriteRule look for IPv6 address ::1.

The website where this runs is using CodeIgniter, so there is already the following .htaccess in place, I just need to add to it:

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/system.*
RewriteRule ^(.*)$ /index.php?/$1 [G]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

Any idea how to write this .htaccess rule?

Solved: Adding another rule makes OPTIONS fall through current rules and be handled the same way as Apache is doing by default.

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/system.*
RewriteRule ^(.*)$ /index.php?/$1 [G]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REMOTE_HOST} !^::1$
RewriteRule ^(.*)$ /index.php?/$1 [L]

I never access the website via localhost on IPv6, so this works great.

1 Answer 1

2
RewriteCond %{REMOTE_HOST} ^::1$
RewriteRule  ^OPTIONS  http://www.google.com/  [L]

that's my best guess, i'm certain of the RewriteCond, but not quite with the RewriteRule

it will match on the REMOTE_HOST being ::1 and then rewrite a request for any URL starting with OPTIONS to www.google.com

5
  • also perhaps RewriteCond %{REQUEST_URI} ^OPTIONS.* and RewriteRule ^(.*)$ http://google.com/ [L] but only educated guessing
    – cpbills
    May 16, 2010 at 0:16
  • Thanks, your rule gave me the idea how to solve it, so I'll mark your answer as accepted. May 16, 2010 at 0:26
  • what did you end up needing to do? and glad i could sort of help :)
    – cpbills
    May 16, 2010 at 0:54
  • 1
    I updated my question with the solution. May 16, 2010 at 1:07
  • Old question, but hey... From the access log in the question, OPTIONS isn't part of the URL-path. "OPTIONS" is the request method (as opposed to GET or POST). With mod_rewrite you can check for this against the REQUEST_METHOD server variable in a RewriteCond directive.
    – MrWhite
    Feb 22, 2017 at 23:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.