将实时站点前端重写为子文件夹(但不是/ admin),并在localhost上重写

时间:2017-04-06 12:48:10

标签: php apache .htaccess mod-rewrite

很多信息几乎解决了这个问题,但是没有什么能够解决这个问题。

该网站有一个前端(基本上都是根目录),一个管理面板位于/admin。基本的东西。

该网站在http://www.example.com上远程运行,在http://foo

上本地运行

我根本不需要本地重定向。

实时服务器上,我只想将前端流量重定向到子文件夹/coming_soon,但管理面板上没有重定向。因此,客户端可以开始使用管理员工作,但公众只会看到/coming_soon中的内容。 (另外我猜管理员登录页面,但那很好)。

我最近来的是:

<IfModule mod_rewrite.c>
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} !=foo
  RewriteRule ^$ /coming_soon [L]
</IfModule>

但那让我击中了真实的&#34;前端直接浏览到http://www.example.com/index.php

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

希望我的问题正确^^不确定/ admin部分,谁应该访问或者如果可能没有人或......但以下是我对您的问题的看法:

RewriteEngine On

#excludes HOST=foo and URI=/admin from rewrite to /coming_soon
RewriteCond %{HTTP_HOST} !^foo [OR]
RewriteCond %{REQUEST_URI} !^/admin
RewriteRule ^ http://www.example.com/coming_soon [R=301,L]

您还可以设置location-directive,并且只允许从特定IP输入/ admin。

<location /admin>
    required ip 10.11.12.13
    required ip 20.30.40.0/24
</location>

<强>更新

RewriteCond %{HTTP_HOST} !=foo
RewriteCond %{REQUEST_URI} !/(coming_soon|admin)
RewriteRule ^(.*)$ /coming_soon [R=302,L]

R = 302只是临时重写=赢得了目标位置的浏览器的缓存。 R = 301会告诉浏览器立即保存目标/coming_soon

答案 1 :(得分:0)

...如果有人能改善这一点,或者让它更优雅,我很乐意听到!

RewriteCond %{HTTP_HOST} !=foo
RewriteCond %{REQUEST_URI} !/coming_soon
RewriteCond %{REQUEST_URI} !/admin
RewriteRule ^(.*)$ /coming_soon [R=302,R]