programing

문이 Rewrite* 규칙을 위반함

jooyons 2023. 6. 9. 22:02
반응형

문이 Rewrite* 규칙을 위반함

Apache/2.4.34에서 표준 워드프레스 액세스 규칙을 사용하고 있습니다.추가하면<If>브레이크를 밟으면 다시 씁니다.

# DEBUG is set to TRUE
<If "-T env('DEBUG')">
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
</If>

다음을 제외한 모든 페이지/반환: 잘못된 요청 브라우저가 이 서버가 이해할 수 없는 요청을 보냈습니다.

blog.local 172.20.0.1 - - [30/Sep/2018:17:07:58 +0000] "GET /2018/09/19/popular/ HTTP/1.1" 400 226 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
[Sun Sep 30 17:07:58.202467 2018] [rewrite:trace3] [pid 7:tid 140686203255528] mod_rewrite.c(482): [client 172.20.0.1:56856] 172.20.0.1 - - [blog.local/sid#55cd2e1aec50][rid#55cd2e246a80/initial] [perdir *If/] add path info postfix: /var/www/html/web/2018 -> /var/www/html/web/2018/09/19/popular/
[Sun Sep 30 17:07:58.202511 2018] [rewrite:trace3] [pid 7:tid 140686203255528] mod_rewrite.c(482): [client 172.20.0.1:56856] 172.20.0.1 - - [blog.local/sid#55cd2e1aec50][rid#55cd2e246a80/initial] [perdir *If/] applying pattern '^index\\.php$' to uri '/var/www/html/web/2018/09/19/popular/'
[Sun Sep 30 17:07:58.202529 2018] [rewrite:trace3] [pid 7:tid 140686203255528] mod_rewrite.c(482): [client 172.20.0.1:56856] 172.20.0.1 - - [blog.local/sid#55cd2e1aec50][rid#55cd2e246a80/initial] [perdir *If/] add path info postfix: /var/www/html/web/2018 -> /var/www/html/web/2018/09/19/popular/
[Sun Sep 30 17:07:58.202543 2018] [rewrite:trace3] [pid 7:tid 140686203255528] mod_rewrite.c(482): [client 172.20.0.1:56856] 172.20.0.1 - - [blog.local/sid#55cd2e1aec50][rid#55cd2e246a80/initial] [perdir *If/] applying pattern '^wp-admin$' to uri '/var/www/html/web/2018/09/19/popular/'
[Sun Sep 30 17:07:58.202557 2018] [rewrite:trace3] [pid 7:tid 140686203255528] mod_rewrite.c(482): [client 172.20.0.1:56856] 172.20.0.1 - - [blog.local/sid#55cd2e1aec50][rid#55cd2e246a80/initial] [perdir *If/] add path info postfix: /var/www/html/web/2018 -> /var/www/html/web/2018/09/19/popular/
[Sun Sep 30 17:07:58.202570 2018] [rewrite:trace3] [pid 7:tid 140686203255528] mod_rewrite.c(482): [client 172.20.0.1:56856] 172.20.0.1 - - [blog.local/sid#55cd2e1aec50][rid#55cd2e246a80/initial] [perdir *If/] applying pattern '^' to uri '/var/www/html/web/2018/09/19/popular/'
[Sun Sep 30 17:07:58.202619 2018] [rewrite:trace4] [pid 7:tid 140686203255528] mod_rewrite.c(482): [client 172.20.0.1:56856] 172.20.0.1 - - [blog.local/sid#55cd2e1aec50][rid#55cd2e246a80/initial] [perdir *If/] RewriteCond: input='/var/www/html/web/2018' pattern='-f' => not-matched
[Sun Sep 30 17:07:58.202638 2018] [rewrite:trace4] [pid 7:tid 140686203255528] mod_rewrite.c(482): [client 172.20.0.1:56856] 172.20.0.1 - - [blog.local/sid#55cd2e1aec50][rid#55cd2e246a80/initial] [perdir *If/] RewriteCond: input='/var/www/html/web/2018' pattern='-d' => not-matched
[Sun Sep 30 17:07:58.202653 2018] [rewrite:trace3] [pid 7:tid 140686203255528] mod_rewrite.c(482): [client 172.20.0.1:56856] 172.20.0.1 - - [blog.local/sid#55cd2e1aec50][rid#55cd2e246a80/initial] [perdir *If/] add path info postfix: /var/www/html/web/2018 -> /var/www/html/web/2018/09/19/popular/
[Sun Sep 30 17:07:58.202666 2018] [rewrite:trace3] [pid 7:tid 140686203255528] mod_rewrite.c(482): [client 172.20.0.1:56856] 172.20.0.1 - - [blog.local/sid#55cd2e1aec50][rid#55cd2e246a80/initial] [perdir *If/] applying pattern '.' to uri '/var/www/html/web/2018/09/19/popular/'
[Sun Sep 30 17:07:58.202681 2018] [rewrite:trace2] [pid 7:tid 140686203255528] mod_rewrite.c(482): [client 172.20.0.1:56856] 172.20.0.1 - - [blog.local/sid#55cd2e1aec50][rid#55cd2e246a80/initial] [perdir *If/] rewrite '/var/www/html/web/2018/09/19/popular/' -> 'index.php'
[Sun Sep 30 17:07:58.202693 2018] [rewrite:trace3] [pid 7:tid 140686203255528] mod_rewrite.c(482): [client 172.20.0.1:56856] 172.20.0.1 - - [blog.local/sid#55cd2e1aec50][rid#55cd2e246a80/initial] [perdir *If/] add per-dir prefix: index.php -> *If/index.php

마지막 메시지는 완전히 이상합니다.add per-dir prefix: index.php -> *If/index.php

뭐가 잘못됐어요?

이것들과 비슷한 사건을 맡았습니다.htaccess규칙:

<If "%{REQUEST_URI} =~ m#^/resources/data/character/[0-9]{1,10}/(avatar|refsheet)\.png$#">
    # ... Other stuff here ...
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ resources/generic/default-refsheet.png
</If>

이러한 조건에서 요청은 상대 경로로 다시 작성됩니다.resources/generic/default-refsheet.png원래 요청한 파일이 존재하지 않는 경우(및 해당 파일이 의 정규식과 일치하는 경우)<If>), 벙어리로 이어집니다.*If/추가 중인 접두사입니다.

디렉토리 접두사가*If/Apache에서 사용하는 내용은 Pleaceholder입니다.<If>는 실제 디렉터리 접두사를 계산하기 전에 항상 먼저 적용됩니다.

그런 경우, 다시 쓴 URL을 상대적으로 유지할 방법을 찾지 못했기 때문에 "절대"(absolute는 실제로는 여전히 상대적이기 때문에 따옴표 안에 있습니다)를 사용했습니다.DocumentRoot가상 호스트의, 그러나 위치와 관련이 없음htaccessis). 따라서 규칙을 다음으로 변경합니다./resources/generic/default-refsheet.png(참고:/1위):

<If "%{REQUEST_URI} =~ m#^/resources/data/character/[0-9]{1,10}/(avatar|refsheet)\.png$#">
    # ...
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ /resources/generic/default-refsheet.png
</If>

이 경우 다시 작성된 URL 앞에 덤이 붙지 않습니다.*If/dir 접두사

그래서 당신의 문제를 위해, 저는 putinta를 시도할 것입니다./(또는 a)/path/to/wordpress/from/document_root/) 다시 작성된 모든 규칙 앞에서:

# DEBUG is set to TRUE
<If "-T env('DEBUG')">
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ /wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) /$1 [L]
RewriteRule ^(.*\.php)$ /$1 [L]
RewriteRule . /index.php [L]
</If>

하지만, 효과가 있을지, 왜 효과가 있는지에 대해서는 100% 확신할 수 없습니다. (따라서 제가 원래 제안한 현상금)

If 문을 다음으로 변경할 수 있습니다.

<If "env('DEBUG') == true">

언급URL : https://stackoverflow.com/questions/52580249/if-statement-breaks-rewrite-rules

반응형