Как поместить веб-сайт Apache в 503 “временных файла вниз”?

Не используйте setGridLinesVisible(true): в документации явно указано, что это только для отладки.

Вместо этого поместите панель во все ячейки сетки (даже пустые ), и создайте панель, чтобы увидеть границы. (Это дает вам возможность очень тщательно контролировать границы, поэтому вы можете избежать двойных границ и т. Д.). Затем добавьте контент в каждую панель. Вы также можете зарегистрировать прослушиватели мыши на панели, что означает, что вам не нужно делать уродливую математику, чтобы выяснить, какая ячейка была нажата.

Рекомендуемый способ применения границы к любому региону - использовать CSS и подход «вложенного фона». В этом подходе вы рисуете два (или более) фоновых залива в регионе, с разными вставками, дающими внешний вид границы. Например:

-fx-background-fill: black, white ;
-fx-background-insets: 0, 1 ;

сначала нарисует черный фон без вставки, а затем над ним будет нарисован белый фон со вставками в 1 пиксель со всех сторон, что даст вид черной границы ширина 1 пиксель. Хотя это может показаться противоречивым, выполнение этого (предположительно) лучше, чем указание границы напрямую. Вы также можете указать последовательность из четырех значений для вставки для для каждой заливки, которые интерпретируются как вставки сверху, справа, внизу и слева соответственно. Таким образом,

-fx-background-fill: black, white ;
-fx-background-insets: 0, 0 1 1 0 ;

имеет черную границу справа и внизу и т. Д.

Я также не уверен SubScene, что вы действительно хотите, если только вы намереваются прикреплять различные камеры к каждой ячейке. Если вам действительно нужна подсессия, сделайте заливку прозрачной, чтобы избежать рисования по краям ячейки. Вы могли бы просто добавить Group непосредственно в каждую ячейку (возможно, вы можете просто добавить круг, в зависимости от того, что вам нужно ...).

Что-то вроде:

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.scene.layout.RowConstraints;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;

public class Game2 extends Application{
    @Override
    public void start(final Stage stage) throws Exception {
        int rows = 5;
        int columns = 5;

        stage.setTitle("Enjoy your game");

        GridPane grid = new GridPane();
        grid.getStyleClass().add("game-grid");

        for(int i = 0; i < columns; i++) {
            ColumnConstraints column = new ColumnConstraints(40);
            grid.getColumnConstraints().add(column);
        }

        for(int i = 0; i < rows; i++) {
            RowConstraints row = new RowConstraints(40);
            grid.getRowConstraints().add(row);
        }

        for (int i = 0; i < columns; i++) {
            for (int j = 0; j < rows; j++) {
                Pane pane = new Pane();
                pane.setOnMouseReleased(e -> {
                    pane.getChildren().add(Anims.getAtoms(1));
                });
                pane.getStyleClass().add("game-grid-cell");
                if (i == 0) {
                    pane.getStyleClass().add("first-column");
                }
                if (j == 0) {
                    pane.getStyleClass().add("first-row");
                }
                grid.add(pane, i, j);
            }
        }


        Scene scene = new Scene(grid, (columns * 40) + 100, (rows * 40) + 100, Color.WHITE);
        scene.getStylesheets().add("game.css");
        stage.setScene(scene);
        stage.show();
    }

    public static class Anims {

        public static Node getAtoms(final int number) {
            Circle circle = new Circle(20, 20f, 7);
            circle.setFill(Color.RED);
            Group group = new Group();
            group.getChildren().add(circle);
//            SubScene scene = new SubScene(group, 40, 40);
//            scene.setFill(Color.TRANSPARENT);
            return group;
        }
    }

    public static void main(final String[] arguments) {
        Application.launch(arguments);
    }
}

и css:

.game-grid {
    -fx-background-color: white ;
    -fx-padding: 10 ;
}
.game-grid-cell {
    -fx-background-color: black, white ;
    -fx-background-insets: 0, 0 1 1 0 ;
}
.game-grid-cell.first-row {
    -fx-background-insets: 0, 1 1 1 0 ;
}
.game-grid-cell.first-column {
    -fx-background-insets: 0, 0 1 1 1 ;
}
.game-grid-cell.first-row.first-column {
    -fx-background-insets: 0, 1 ;
}

40
задан temoto 8 March 2009 в 06:41
поделиться

2 ответа

Вы могли использовать mod_rewrite:

RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} !=503
RewriteRule !^/down/for/maintenance$ %{DOCUMENT_ROOT}down/for/maintenance [L,R=503]

RewriteCond директива удостоверяется, что никакая дополнительная внутренняя ошибка не происходит при перенаправлении с пользовательским ошибочным документом.

30
ответ дан Gumbo 23 September 2019 в 16:27
поделиться

@temoto

Чтобы указать 503 для ботов и страницу обслуживания для людей, попробуйте следующее

RewriteEngine on
RewriteBase /
#for bots such as google
RewriteCond %{HTTP_USER_AGENT} ^.*(Googlebot|Googlebot|Mediapartners|Adsbot|Feedfetcher|bingbot)-?(Google|Image)? [NC]
RewriteCond %{ENV:REDIRECT_STATUS} !=503
RewriteRule !^/down/for/maintenance$ %{DOCUMENT_ROOT}down/for/maintenance [L,R=503]

#for humans
RewriteCond %{REMOTE_HOST} !^1\.1\.1\.1
RewriteCond %{REQUEST_URI} !^/maint.html [NC]
RewriteRule .* /maint.html [R=302,L]
0
ответ дан 27 November 2019 в 01:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: