1

我创建了一个 .htaccess 文件来将特定 IP 地址重定向到另一个文件:

# Allow rewriting of htaccess
RewriteEngine On
RewriteBase /

# Get remote address/block of addresses to redirect
RewriteCond %{REMOTE_ADDR} 127\.0\.0\.1

# Define the file being accessed
RewriteCond %{REQUEST_URI} /index\.php$

# When the remote address(es) try to access the file above redirect them to the file below
RewriteRule .* /other-index\.php [R,L]

如果它尝试访问 index.php 但允许所有其他远程主机访问 index.php,则这很好,上面将 localhost 重定向到 other-index.php。

远程主机正在调用:http ://www.example.com/index.php

我的问题是远程主机(在本例中为 localhost)能否发现它正在被服务器重定向?

4

1 回答 1

1

我的问题是远程主机(在本例中为 localhost)能否发现它正在被服务器重定向?

/index.php是的,因为客户端(位于 127.0.0.1)向服务器发出请求。服务器以 302响应,将客户端重定向到不同的位置/other-index.php

通常,这一切都是无缝进行的,就像您使用浏览器一样。浏览器获取新位置 ( /other-index.php) 并简单地向服务器发出新请求以获取新位置并获取它。它立即发生。但是远程主机(客户端)知道它正在被重定向,因为它发出的第一个请求(for /index.php)导致了一个带有新位置/other-index.php)的 302。

如果R您的方括号中的标志RewriteRule被省略,则不会发生重定向,并且 URI 将由服务器在内部重写,并且客户端(远程主机)将忘记提供服务的事实other-index.php请求时的内容other.php

于 2012-09-19T15:52:05.593 回答