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 ""