문제

일반적인 것들로 시작하는 htaccess 파일이 있습니다.

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

그런 다음 몇 가지 다시 작성됩니다.

RewriteRule ^protect/?$ /Legal/Your-Financial-Protection.aspx   [NC, L, R=301]

그런 다음 다시 쓰기로 끝납니다.

RewriteMap map txt:rewritemaps/map.txt  [NC]
RewriteRule ^(.+)$  ${map:$1}   [R=301]

RewriteMap에는 현재 사이트의 모든 레거시 URL 페이지와 새 사이트의 동등한 페이지로 리디렉션되는 짧은 URL이 포함되어 있습니다 (약 4K가 있으므로 실제로 맵을 사용해야합니다).

Inspiration.aspx /Inspiration.aspx
Destinations/Africa/Countries/Gabon.aspx /Destinations/Africa/Gabon.aspx
indonesia /Destinations/Southeast-Asia/Indonesia.aspx

문제는 RewriteMap을 활성화 한 (즉, 주석을 달지 않음), 모든 URL (일치하지 않은 것조차도)을 포함하여 스타일 시트, JS, 이미지 등을 포함하여 REDIRECTER로 리디렉션됩니다.

내가 뒤 따르는 것은지도의 패턴과 일치하는 Uris이며 교체품으로 리디렉션하고 다른 모든 것을 통과 할 수 있습니다 (즉, 동일하게 유지).

지도에서 기본값 $ 1을 설정하려고 시도했습니다.

RewriteRule ^(.+)$  ${map:$1|$1}    [R=301]

그러나 이것은 단지 리디렉션 루프를 유발합니다. 나는 또한 모든 .css, .js, .jpg 등에 대한 재 작성을 건너 뛸 수 있다고 생각하지만 중고 파일 확장 목록을 유지할 필요는 없습니다.

참고로, 나는 Helicontech의 Isapirewrite (IIS 6에있는 것처럼)를 사용하고 있지만 APACHE에 따라 다시 작성 맵을 처리한다고 주장하지만 과거에는 문제가 없었습니다.

어떤 도움이든 큰 감사를드립니다!

감사합니다, 아담

도움이 되었습니까?

해결책

실제로 다른지도에 쌍 만 넣으십시오. 그렇지 않으면 동일한 값으로 리디렉션하고 무한 재귀를 얻습니다.

경기가 발견 될 때만 리디렉션하려면 다음을 시도하십시오.

RewriteCond ${map:$1} ^/.+
RewriteRule ^(.+)$ %0 [R=301]

다른 팁

이 줄은 문제입니다.

RewriteMap map txt:rewritemaps/map.txt  [NC]

.htaccess 파일에서 다시 작성 맵을 정의 할 수 없습니다. (문서 재 작성 참조) 서버 또는 가상 호스트 컨텍스트에서 맵을 정의 한 다음 .htaccess 파일에서 참조 할 수 있습니다. 로그 레벨을 충분히 높이면지도가로드되지 않았다는 경고가 표시됩니다.

Gumbo의 솔루션은 공간이있는 URL을 처리하지 않는 것 외에는 훌륭합니다.http://www.webmasterworld.com/apache/3830228.htm 두 가지를 결합하여 공간을 처리하는 방법에 대한 통찰력을 제공합니다.

  RewriteCond ${moved:${escape:$1}} ^/.+
  RewriteRule ^(.+)$ %0 [R=301]

작동하지 않습니다. 젠장, 나는 mod_rewrite를 싫어한다

  IPADDR - - [07/Jan/2010:01:44:58 --0500] [example.org/sid#842a5a8][rid#100e0a18/initial] (2) init rewrite engine with requested uri /press/Partners With City.pdf
  IPADDR - - [07/Jan/2010:01:44:58 --0500] [example.org/sid#842a5a8][rid#100e0a18/initial] (3) applying pattern '^(.+)$' to uri '/press/Partners With City.pdf'
  IPADDR - - [07/Jan/2010:01:44:58 --0500] [example.org/sid#842a5a8][rid#100e0a18/initial] (5) map lookup OK: map=escape key=/press/Partners With City.pdf -> val=/press/Partners%20With%20City.pdf
  IPADDR - - [07/Jan/2010:01:44:58 --0500] [example.org/sid#842a5a8][rid#100e0a18/initial] (6) cache lookup FAILED, forcing new map lookup
  IPADDR - - [07/Jan/2010:01:44:58 --0500] [example.org/sid#842a5a8][rid#100e0a18/initial] (5) map lookup FAILED: map=moved[txt] key=/press/Partners%20With%20City.pdf
  IPADDR - - [07/Jan/2010:01:44:58 --0500] [example.org/sid#842a5a8][rid#100e0a18/initial] (4) RewriteCond: input='' pattern='^/.+' => not-matched

Adam, Gumbo의 규칙에는 키의 선행 슬래시가 포함되어 있으며, 맵의 게시 된 버전이 누락되었습니다.

Rewriteloglevel 9는 이와 같은 것들을 발견하는 데 매우 편리합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top