2011-11-15 3 views
1

도메인 별칭이있는 주 도메인을 제외한 모든 도메인에 대해 robots.txt를 다시 작성하고 싶습니다. 내 규칙이 서로 충돌하거나 무시하는 것 같습니다. test.example.org 도메인의 경우 모든 images/css/js가 작동하지 않습니다. 로봇은 다시 쓰지만 다른 것은 작동하지 않습니다. 내 사이트는 하나의 index.php 컨트롤러를 사용합니다. 나는이 규칙들을 어떻게 바꿔야하는지 분명하지 않다.lighthttpd 다시 쓰기 문제

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") 
} 

편집 : 명확히하기 ... example.org와 test.example.org가 있습니다. 서로의 별칭입니다. 즉, 정확히 동일한 사이트를 가리 킵니다. 두 도메인 모두에서 작동하도록 맨 위에 정의 된 10 가지 규칙을 원합니다. 하지만 test.example.org의 경우 다른 로봇 파일을 사용하고 싶습니다. 위의 코드는 작동하지만 로봇에 대한 test.example.org 행의 주석 처리를 제거하면 이전 10ish 규칙이 ​​더 이상 작동하지 않는다고 생각했습니다. 그리고 그게 내가 이해가 안되는 이유는 무엇입니까? 그 라인을 추가하는 것이 왜 더 이상 적용되지 않는가? : 그 라인을 추가하는 것이 왜 더 이상 적용되지 않는 원인이되는 이전의 css, js, etc 규칙은 왜 발생합니까?

+0

내 대답보기 그게 네가 원하는 바가 아니라면 나는 오해했을거야. 아마도 귀하는 귀하의 질문에있는 정보를 수정할 수 있습니다. – 0xC0000022L

답변

0

정규 표현식에 부정적 예측을 사용하거나 선택자를 사용합니다. 그것은 그러나, 특정 경우에 당신은 여전히이 URI가 존재하는지 확인해야 ... /robots.txt 캐치 할 필요로

# 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) 
} 

지금 위의 재 작성, 잘해야한다. 이것은 내 샘플의 셀렉터가하는 것입니다 ...

물론 변수 대신에 리터럴 문자열을 사용할 수도 있습니다.