.htaccess维护模式重写

时间:2016-03-09 13:01:47

标签: apache .htaccess redirect mod-rewrite

我正在尝试使用.htaccess设置维护模式,这允许从某个IP访问的用户仍然可以查看该站点。该站点从CMS(Perch Runway)运行,它使用重写规则作为系统的一部分,因此这些需要对来自该IP的访问者起作用。 Perch Runway代码如下:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/perch
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /admin/core/runway/start.php [L]

我的重定向维护代码是:

RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_ADDR} !^11\.111\.111\.111
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L]

我尝试过将两者合并,但我正在获得重定向循环。所以总之我需要:

  • 维护模式重定向至maintenance.html
  • 从IP 11.111.111.111访问的人不受此重定向的影响
  • 从IP 11.111.111.111访问的人仍然受到Perch Runway重定向的影响

请注意,我希望向未访问指定IP的用户展示maintenance.html页面,因此无法使用deny

非常感谢!

1 个答案:

答案 0 :(得分:0)

结合评论中发布的答案,我在Wordpress页面上对此进行了测试,结果正常:

ErrorDocument 403 /liesmich.html
order deny,allow
deny from all
allow from 111.222.333.444
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

因此对于Perch Runway看起来像这样我打赌:

ErrorDocument 403 /maintenance.html
order deny,allow
deny from all
allow from 111.222.333.444
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/perch
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /admin/core/runway/start.php [L]

从评论中发布答案,因为新行被切断,代码看起来很糟糕。