【问题标题】:PHP - put website frontend only in maintainance mode (.htaccess)PHP - 仅将网站前端置于维护模式(.htaccess)
【发布时间】:2018-09-18 12:39:02
【问题描述】:

这是他们将网站前端仅置于维护模式并允许所有用户访问管理员的方法。 (我正在研究 PHP)。

我相信可以通过 .htaccess 来完成,但不知道怎么做?

有什么帮助吗?

我试过了:

RewriteEngine On
RewriteRule ^admin/.*$ - [F]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

这会做相反的工作,我可以使用此代码访问前端而不是管理员。

谢谢。

【问题讨论】:

    标签: php .htaccess magento web


    【解决方案1】:

    试试这个解决方案。它将为客户端进行维护,但您可以添加用户 ips 以访问管理员和前端。

    编辑 index.php 添加这一行:

    $ip = $_SERVER['REMOTE_ADDR'];
    
    $allowed = array('your ip','second ip', 'third ip');
    

    换行

    if (file_exists($maintenanceFile)) {
    

     if (file_exists($maintenanceFile) && !in_array($ip, $allowed)) { 
    

    解决方案来自: http://inchoo.net/magento/maintenance-mode-in-magento/

    【讨论】:

      【解决方案2】:

      对不包含“admin”的 URL 的任何请求都将重定向到 index.php。添加一些“维护中”的消息,你就完成了:

      RewriteEngine On
      RewriteCond %{REQUEST_FILENAME} !admin/
      RewriteRule . index.php [L]
      

      【讨论】:

        【解决方案3】:

        不可能通过 .htaccess 来实现。至少不是永久的解决方案。您可以阻止对编辑页面的访问,但您必须不断地编辑 .htaccess。此外,您还必须确保所有路径都正确。

        Magento 有一个内置函数来阻止编辑。如果它不符合您的要求,您应该查看一些 magento 插件或自己创建一个。

        你的问题也太宽泛了。你应该至少提供一个你尝试过的例子,并解释什么不起作用。

        【讨论】:

        • 嗨,我已经修改了我尝试过的内容,使用该代码我的管理员被阻止但我可以访问前端
        • 我不需要永久解决,我可以使用Magento2 IP白名单的方式,但我们实际上不知道IP,所以我们需要对所有IP都这样做
        • RewriteRule ^admin/.*$ - [F] 返回 403 - 请求的禁止状态:httpd.apache.org/docs/2.4/rewrite/flags.html#flag_f 你为什么不使用 Magento 内置的维护模式?
        • 另外,仅将前端置于维护模式是什么意思?当您想要应用一些更新或更改时,应使用维护模式。这样您的用户就无法在您执行此操作时更新内容。在更新时允许编辑可能会彻底破坏您的网站。
        • 实际上我的前端处于维护模式,但管理员想查看旧订单