htaccess 将所有内容重定向到一个文件(本地主机除外)

htaccess 将所有内容重定向到一个文件(本地主机除外)

我想将所有流量重定向到单个 .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,则停止。然后,您指出,如果请求来自本地主机,则只执行 URL,否则执行重定向。您可能会受到某种内部重定向机制的影响,您可能必须快速设置 RewriteLog 和 RewriteLogLevel,以调试 Apache 正在采取的操作。

相关内容