You do not "redirect to a 403 page." To do so is an error and it violates the HTTP protocol.
Instead, you directly invoke a server 403-Forbidden response and let the server supply a "403 page" along with the correct HTTP response code. If you have not already done so, you will need to configure the server to tell it what page to use. Example using mod_rewrite:
# Declare 403 error page
ErrorDocument 403 /403.shtml
#
# Forbid access to all pages except robots.txt and 403.shtml to the following IP addresses and ranges
RewriteCond %{REMOTE_ADDR} =192.168.0.10 [OR]
RewriteCond %{REMOTE_ADDR} ^10\.10\.0\. [OR]
RewriteCond %{REMOTE_ADDR} ^172\.100\.9[6-9]\. [OR]
RewriteCond %{REMOTE_ADDR} ^172\.100\.(1[01][0-9]|12[0-7])\.
RewriteRule !^(robots\.txt|403\.shtml)$ - [F]
The first RewriteCond uses an exact match: Only exactly 192.168.0.10 will be denied.
The second line uses a regular expression. Because the last octet of the address is not specified, all clients in the range from 10.10.0.0 through 10.10.0.255 will be denied.
The third RewriteCond denies access to clients from IP addresses in the range 172.100.96.0 through 172.100.99.255.
The last RewriteCond denies accress to clients in the IP address range of 172.100.100 through 172.100.127.255.
Another way to do this is by using mod_setenvif and mod_access:
# Declare 403 error page
ErrorDocument 403 /403.shtml
#
# Forbid access to all pages except robots.txt and 403.shtml to the following IP addresses and ranges
SetEnvif Request_URI "^(robots\.txt|403\.shtml)$" Allow_it
#
Order Deny,Allow
Deny from 192.168.0.10
Deny from 10.10.0.
Deny from 172.100.96.0/22
Deny from 172.100.100.0/22 172.100.104.0/21 172.100.112.0/20
Allow from env=Allow_it
Each "Deny from" line denies the same addresses as the RewriteConds above. Note the advantages of using regular-expressions matching in some cases, and CIDR notation in others.
Set the documentation for mod_rewrite, mod_setenvif, and mod_access for more information.
Jim