0

我有这个httpd.conf

<VirtualHost xx.xxx.xx.xxx>
    Options All +ExecCGI
    ServerAdmin hostmaster@thehost.com
    DocumentRoot /var/www/html/domain.com
    ServerName  dl.domain.org
    DirectoryIndex dlindex1.html
</VirtualHost>

...这很好(我需要作为DirectoryIndex我们的 'dl.domain.org' 子域的),现在我还需要DirectoryIndex根据 IP 地址更改它,使用.htaccess. 这可能吗?

其他 SO 帖子告诉我,我不能DirectoryIndex有条件地设置..而是必须使用RewriteRule. 如果这是真的,好的,但是什么RewriteCondRewriteRule?我在 Apache 中很菜鸟,但无论如何我尝试了很多东西,包括(实际 IP 是我们 2 个开发人员的 IP):

RewriteCond %{REMOTE_ADDR} ^111\.222\.333\.444$    [OR]
RewriteCond %{REMOTE_ADDR} ^555\.666\.777\.888$
RewriteCond %{SERVER_NAME} ^dl.domain.org
RewriteRule ^(.*)/$ $1/dlindex2.html

..甚至只是(作为绝对测试):

RewriteCond %{REMOTE_ADDR} ^555\.666\.777\.888$
RewriteRule (.*)/dlindex1.html$ $1/dlindex2.html

但似乎无论我尝试什么,它都只是提供DirectoryIndex dlindex1.htmlas per httpd.conf,而不是dlindex2.html当开发人员 IP 调用时,我希望作为该子域中的默认页面提供服务。

任何人都可以指出我可以做些什么来获得我所追求的吗?即: ...实际上,甚至只是有效地,DirectoryIndex根据IP地址进行更改,使用.htaccess,在飞行中?

4

1 回答 1

0

有两种方法对我有用:

https://unix.stackexchange.com/questions/44129/conditional-directoryindex-based-on-ip-address-using-htaccess

https://webmasters.stackexchange.com/questions/32727/conditional-directoryindex-based-on-ip-address-using-htaccess

例如:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^12\.34\.56\.78$
RewriteCond %{REQUEST_URI} index\.html$
RewriteRule .* /index1.html

RewriteCond %{REMOTE_ADDR} !^12\.34\.56\.78$
RewriteCond %{REQUEST_URI} index\.html$
RewriteRule .* /index2.html
于 2012-07-29T14:32:22.193 回答