2012-11-05 4 views
4

저는 2 시간 이상이 문제를 해결하려고합니다. .htaccess를 사용하여 URL을 관리하는 개인 사이트가 있습니다. 은 다음과 같습니다.htaccess RewriteRule이 빈 페이지를 반환합니다.

RewriteEngine on 
RewriteBase/
... 
RewriteRule ^sklad/?$ index.php?action=sklad 
RewriteRule ^sklad/user/([0-9]+)?$ index.php?action=sklad&user=$1 
RewriteRule ^sklad/folder/(.+)?$ index.php?action=sklad&folder=$1 
RewriteRule ^sklad/file/(.+)?$ engine/ajax/sklad.php?file=$1 
RewriteRule ^sklad/logout/?$ index.php?action=sklad&op=logout 
... 
RewriteRule ^admin/?$ admin.php 
RewriteRule ^admin/news/?$ admin.php?action=news 

처음 다섯 사람이 잘 작동합니다. admin/ 하나가 정상적으로 작동합니다. 하지만 admin/news/에 액세스하려고하면 빈 페이지가 나타납니다. Apache에서 오류를 표시하거나 기록하지 않으며 출력도 표시되지 않습니다. admin.php? action = news 잘 동작 중입니다.

sklad/admin/ 폴더가 물리적으로 서버에 있습니다. 하지만은 내가 admin123과/뉴스/에 액세스 할 수 있습니다 뭔가 다른 에 관리자/폴더의 이름을 바꾸거나

RewriteRule ^admin123/news/?$ admin.php?action=news 

처럼 뭔가에 마지막 RewriteRule의 변경 때. 서버에있는 실제 폴더와 관련이 있다면, 처음 다섯 개의 규칙이 작동하는 이유는 무엇입니까? 이것은 말이되지 않습니다. 나는 아이디어 나갈거야

, 나는 htaccess로하고 정규식으로 좋은에 아닙니다

+1

'/ admin '에'news'로 시작하는 파일이 있습니까 /'폴더? –

+0

예, news.php라고합니다 ... 파일의 이름을 변경하고 exerything은 이제 괜찮습니다. 고마워요! 이것에 대해 몰랐는데, 꽤 알지 못하는 버그입니까? – Afftamat

답변

2

네, news.php라고합니다 ... 파일의 이름을 변경했으며 exerything은 이제 괜찮습니다. 이것에 대해 매우 불명확 버그 몰랐 (또는하지를?)

그것은 버그가 아니라, 그것은 켜져 (mod_negotiation를 통해) 내용 협상 같은 소리 그것을 당신이 원하지 않는 일을하고 있어요. 협상은 유형 맵 또는 MultiViews 옵션을 통해 켤 수 있습니다. Typemaps는 설정에 약간 명시 적이므로 왜 이런 일이 발생하는지 모르기 때문에 news.php에 매핑되는 특정 유형을 설정하지 않았으므로 가정합니다. 따라서 다형성이 켜져 있습니다. 당신은 어느 쪽 Options 문에서 제거하여 해제 할 수 있습니다

# remove this word -----------v 
Options Indexes FollowSymLinks Multiviews 

이가 될 수 어디서나 당신의 htaccess로, 서버 설정, 가상 호스트 설정에서 일부 설정 등 파일을 포함따라서 htaccess 파일에서 명시 적으로 설정을 해제 할 수도 있습니다 (동일한 파일에 명시 적으로 설정하지 않은 경우).

Options -Multiviews 
+0

내 .htaccess에서'Options'에'-Multiviews'를 추가하여 문제를 해결했습니다. 감사! – Afftamat

0

... 누군가가 여기에 도움이되기를 바랍니다하지만 난 관리/뉴스 귀하의 첫 번째 htaccess로 규칙에 빠질 것이라 생각합니다.

RewriteRule ^admin/?$ admin.php 

그것은 습관입니다 관리자에 두 번째 규칙을 계속 :

RewriteRule ^admin/news/?$ admin.php?action=news 

그 내가 전에 직면했던 것과 동일한 문제.

params 패스가 없을 때 admin.php, echo/print를 수정하십시오. 다음과 같이 입력하십시오 :

if($_GET['action']) 
    { 
     echo 'With Parameters'; 
    } 
    else 
    { 
     echo 'No Parameters pass'; 
    } 

그런 식으로 디버깅하십시오.

+0

메타, 헤더, 로그인 양식 (활성 세션이없는 경우) 또는 $ _GET [ 'action']'이 정의되지 않은 채로 많은 것들이 표시됩니다. 환영 페이지, 풋터 등이 있습니다. – Afftamat

관련 문제