htaccess는 모두 하나의 파일로 리디렉션합니다(localhost 제외).

htaccess는 모두 하나의 파일로 리디렉션합니다(localhost 제외).

모든 트래픽을 단일 .php 게이트웨이 파일로 리디렉션하고 싶습니다. 이 파일은 인증을 수행하고 ajax를 사용하여 요청된 파일을 가져옵니다.

따라서 다음과 같은 흐름을 가진 .htaccess가 필요합니다.

if external request for any file
redirect (or rewrite) to /gateway.php

그런 다음 Gateway.php는 파일에 액세스할 수 있어야 합니다.

이것은 내가 생각해 낸 최고의 것입니다:

RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1
RewriteCond %{REQUEST_URI} !/gateway\.php$  
RewriteRule .* http://www.website.com/gateway.php?req=%{REQUEST_URI} [R=302,L]

이것은 작동하지만, Gateway.php의 ajax가 다른 페이지에서 콘텐츠를 가져오려고 하면 (리디렉션으로 인해) Gateway.php에서 콘텐츠를 가져옵니다. 어떻게든 예외를 추가해야 합니다!

어떤 도움이라도 대단히 감사하겠습니다!

답변1

거기에 RewriteBase가 필요하지 않습니다. 다음을 시도하십시오.

RewriteEngine on
RewriteRule ^/gateway\.php$ - [L]
RewriteCond %{REMOTE_HOST} ^127\.0\.0\.1
RewriteRule ^(.*)$ - [L]
RewriteRule ^(.*)$ http://www.website.com/gateway.php?req=%{REQUEST_URI} [R=302,L]

먼저 Gateway.php가 요청되면 중지하라고 명시적으로 말합니다. 그런 다음 localhost에서 온 경우 URL만 수행하고 ELSE는 리디렉션을 수행한다고 말합니다. 일종의 내부 리디렉션 메커니즘의 적용을 받을 수 있으며, Apache가 수행하는 작업을 디버깅하려면 RewriteLog 및 RewriteLogLevel을 빠르게 설정해야 할 수도 있습니다.

관련 정보