Lighthttpd переписать вопрос - PullRequest
1 голос
/ 15 ноября 2011

Я хочу переписать свой robots.txt для всех доменов, кроме основного (у меня есть псевдонимы доменов). Кажется, что мои правила конфликтуют или переопределяют друг друга - для домена test.example.org все изображения / css / js не работают - роботы переписывают, но больше ничего не работает. Обратите внимание, что мой сайт использует один контроллер index.php. Мне неясно, как перефразировать эти правила.

url.rewrite-once = (
  "^(.*)\.[\d]{10}\.(css|js)$" => "$1.$2",   # Cache-busing js and css files
    "^/favicon\.(.*)" => "/images/favicon/favicon.ico",
    "^/css/.+" => "$0", # directories with static files
    "^/js/.+" => "$0",
    "^/htc/.+" => "$0",
    "^/favicon\.ico$" => "$0", # static file example
    "^/robots.txt" => "$0",
    "^/(.*)\.php(.*)" => "$0",
    "^/(.+)$" => "/index.php/$1"
)


$HTTP["host"] == "test.example.org" {
   # url.rewrite-repeat = ("^/robots\.txt$" => "altbots.txt")
}

Редактировать: чтобы уточнить ... У меня есть 2 домена - example.org и test.example.org. Они являются псевдонимами друг друга - то есть они указывают на один и тот же сайт. Я хочу, чтобы примерно 10 правил, определенных сверху, работали для обоих доменов. Но для test.example.org я хочу использовать другой файл роботов. Я думал, что вышесказанное сработает, но раскомментирование строки test.example.org для роботов приводит к тому, что все предыдущие 10ish-правила перестают работать. И вот чего я не понимаю - зачем добавлять эту строку:

url.rewrite-repeat = ("^/robots\.txt$" => "altbots.txt")

сделать так, чтобы предыдущие правила css, js и т. Д. Больше не применялись?

1 Ответ

0 голосов
/ 21 февраля 2012

Либо вы используете в своих регулярных выражениях отрицательный взгляд, либо используете селекторы.

# Somewhere above declare the path to the robots.txt
var.robots = "/var/www/somewhere/robots.txt"
# The selector
$HTTP["url"] =~ "^/robots\.txt$" {
  alias.url                = ( "/robots.txt" => var.robots )
}

Теперь приведенная выше перезапись должна быть в порядке, так как она должна перехватывать /robots.txt ... однако, в вашем конкретном случае вам все равно нужно убедиться, что этот URI существует. Это то, что делает селектор в моем примере ...

Конечно, вы также можете вместо использования переменной просто использовать буквенную строку вместо нее.

...