/ / Apache RewriteRule регекс с точки и искане на root - apache, .htaccess, mod-rewrite

Regex от Apache RewriteRule с точки и искащ корен - apache, .htaccess, mod-rewrite

DocumentRoot сочи към папка, съдържаща само .htaccess с RewriteRule директива.

Точков знак в регекс Apache съвпада с всеки един символ.

Правилото RewriteRule a..b - [G] работи според очакванията:

GET /ab HTTP/1.1
GET /axb HTTP/1.1
GET /axxxb HTTP/1.1
GET /zaxx HTTP/1.1
404 Not Found - OK

GET /axxb HTTP/1.1
GET /zaxxbz HTTP/1.1
410 Gone - OK

Правилото RewriteRule .. - [G] работи както се очаква и във всеки случай, освен когато изисква "/":

GET /x HTTP/1.1
404 Not Found - OK

GET /xx HTTP/1.1
GET /xxx HTTP/1.1
GET /xxxx HTTP/1.1
410 Gone - OK

GET / HTTP/1.1
410 Gone - WRONG!

Защо регексът, съдържащ само точки, не работи според очакванията при заявка "/" в Apache 2.4?

Отговори:

0 за отговор № 1

Това правило:

RewriteRule .. - [G]

Се завръща 410 за / защото DirectoryIndex директиви, които се изпълняват преди mod_rewrite модул и допълнение index.html или index.* пред /.

Това прави .. съвпадат 2 знака на index.html и ще получите 410 Gone.

Ако деактивирате тази директива, като поставите тази линия в горната част на вашата .htaccess тогава 410 ще изчезне за / URI:

DirectoryIndex ""