2012-12-09 10 views
1

허영 URL을 허용하는 .htaccess 파일을 만들었습니다. 그러나 색인 파일을 입력하지 않고도 www.website.com을 입력 할 수 없습니다. 나는. 홈페이지를 보려면 www.website.com/index.php를 입력해야합니다..htaccess 파일이 index.php를 인식하지 못합니다.

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule .* - [L] 
RewriteRule ^(.*)$ http://www.website.com/profile.php?u=$1 [NC] 

누구든지이 문제를 해결하는 방법을 알고 : 이것은 내 htaccess로 파일처럼 보이는 무엇인가? 다들 감사 해요!

+0

'www.website.com' 호스트의 문서 루트에있는이'.htaccess' 파일이 있습니까? –

답변

4

규칙을 정의한 방식에 따라 복잡성이 증가했습니다. 파일 이름이 그대로 파일 프로세스의 디렉토리 인 경우 규칙 위

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule .* - [L] 

을 의미한다. 그 후에는 더 이상 처리하지 마십시오.

RewriteRule ^(.*)$ http://www.website.com/profile.php?u=$1 [NC] 

이 규칙은 당신이 첫 번째 규칙을 확인하고 일치하지 www.website.com입니다 /를 요청할 때 지금 profile.php?u=

모든 요청 URI를 매핑하는 것을 의미한다. 그런 다음 두 번째 규칙을 확인하고 profile.php?u=에 매핑합니다. $_GET['u']이 비어 있거나 profile.php에서 / 경우,이를 해결하기 위해

  1. 한 가지 방법은 * 체크 할 것이다. 그런 다음 index.php을로드하십시오.
  2. 또 다른 방법은 발견 된 사용자 이름에 적합한 정규 표현식을 찾는 것입니다.

    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(USERNAME_REGEX)$ http://www.website.com/profile.php?u=$1 [NC,L] 
    

PHP를 사용하고이 문제를 해결할 수있는 가장 좋은 방법,

RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ /index.php?uri=$1 [L] 

이제 index.php 당신이 통과 모든 URI를 얻을 것이다. 이제 index.php에있는 URI를 처리 할 수 ​​있습니다.

2

서버가 설정되었을 수 있습니다. 시도 DirectoryIndex index.php (http://davidwalsh.name/directory-index-homepage-htaccess 참조)

편집

당신이 RewriteRule의없이 그것을 시도 * 가지고 (나를 처음부터 제대로 질문을 읽고 있지 때문에) -.의 L] 라인을?

+0

그런 경우입니다. www.website.com은 .htaccess를 추가하기 전에는 작동하지 않았지만 더 이상 작동하지 않는다고 분명히 말합니다. – Codeguy007

+0

내 사과, 집중력 부족. 'RewriteRule. * - [L]'줄없이 해 보셨습니까? 대답을 수정하면 – qooplmao

+0

입니다. 나는 아래 표를 제거 할 것입니다. – Codeguy007

관련 문제