2013-05-07 6 views
1

저는 codeigniter를 사용하여 XML 데이터가 포함 된 페이지를 생성하고 있습니다. 파일의 URL은 /index.php/sitemap에 있지만, /sitemap.xml을 통해 URL에 액세스하려고합니다..htaccess를 사용하여 /sitemap.xml을 /index.php/sitemap/로 리디렉션합니다.

.htaccess 파일은 이미 /index.php를 입력하지 않고 URL에 액세스 할 수 있도록 수정되었습니다./URL 앞에. 이것은 내가 사용하고있어 .htacess 파일입니다

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

RewriteRule ^sitemap\.xml$ index.php/sitemap [L] 

모두가 sitemap.xml의 파일의 리디렉션을 제외하고 잘 작동합니다. XAMPP를 실행하는 Windows 컴퓨터에 있습니다.

무엇이 잘못 되었나요? 당신은 항상 index.php로 리디렉션 있도록 사이트 맵 검사에 도달하기 전에

+2

xml 줄이 인덱스 규칙보다 먼저 이동하기 때문에 xml 줄을 인덱스 규칙 위로 옮길 수 있습니다. –

+1

나는 codeigniters URL 라우팅 방법이 작동하는 것을 발견했지만, 나중에이 규칙을 맨 위에 올리면 404 오류가 발생합니다. – Xecure

답변

2

이 htaccess로 수정 사용을 건너 다시 작성하기 전에

RewriteEngine on 
RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteRule ^.*/(.*)$ /index.php/$1 [L] 

당신은 그냥 거기에 맵에 대한 점검을 밀어 수 있습니다

user guide의 예입니다 대신 정상적인 경로.

$route['sitemap\.xml'] = 'sitemap'; 
+0

고맙습니다. 내가 왜 codeigniters URL 라우팅을 사용하지 않을지 모르겠다. – Xecure

0
RewriteRule ^.*sitemap\.xml$ index.php/sitemap [L] 
RewriteRule ^(.*)$ /index.php/$1 [L] 

당신은 일치한다. 표준은 index.php를

RewriteEngine on 
RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteRule ^.*/sitemap\.xml$ index.php/sitemap [L] 
RewriteRule ^.*/(.*)$ /index.php/$1 [L] 
+0

어떤 이유로 든 사용자 안내서에서 예제를 사용하면 내 로컬 호스트에 500 개의 서버 오류가 발생하므로 다른'.htaccess' 파일을 사용해야합니다. codeigniter 포럼에서 찾았습니다. – Xecure

+0

Ok 그래서 색인 앞에 XML 재 작성을 넣으십시오. .php 다시 작성 – stormdrain

+0

codeigniters URL 라우팅 방법이 작동하지만 나중에이 규칙을 맨 위에 올리면 404 오류가 발생합니다. – Xecure

0

규칙의 순서가 중요합니다. 규칙은 작성된 순서대로 처리됩니다. 그들이 마지막 규칙에 도달하기 전에 모든 따라서 규칙

RewriteRule ^.*$ index.php [NC,L] 

일치 .* 패턴은 모든 요청을 다시 씁니다.

sitemap.xml 규칙을 맨 위에 올리면 예상대로 작동합니다.

+0

나는 codeigniters URL 라우팅 방법이 작동하는 것을 발견했으나 나중에이 규칙을 맨 위에 올리면 404 오류가 발생합니다. – Xecure

관련 문제