2013-12-11 2 views
0

내가PHP는 여러 모드 다시 쓰기 규칙 충돌

localhost/xxx/google 

localhost/xxx/profile.php?name=google에서 내 URL을 청소하려고 해요 아래는 내 htaccess로 파일

RewriteEngine On 
    RewriteBase /creatorsink/ 
    RewriteRule ^([a-z]+)/?$ profile.php?name=$1 [L,QSA] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}.php -f 
    RewriteRule ^(.*)$ $1.php [L] 

내가 제대로 작동하고 RewriteRule ^(.*)$ $1.php [L]을 제거하면 입니다, 그렇게한다면 .php 확장자없이 열 수 없습니다.

서로 충돌하지 않고 둘 다 사용할 수있는 방법이 있습니까?

답변

0

규칙의 순서에 문제가 있습니다. 첫 번째 규칙은 모든 URI를 잡는 것입니다. 순서를 바꾸고 첫 번째 규칙을 좀 더 똑똑하게 만듭니다.

RewriteEngine On 
RewriteBase /creatorsink/ 

RewriteRule ^([^/]+)/?$ profile.php?name=$1 [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/creatorsink/$1.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 
+0

답장을 보내 주셔서 감사합니다.하지만 불행히도 작동하지 않습니다. 내 질문에 업데이트 된 .htaccess 수정 사항이 있는지 확인하십시오. 내가 어디에서 잘못하고있는 것 같아? –

+0

제 대답에서'RewriteCond % {REQUEST_FILENAME} .php -f' 줄을 추가해야한다는 제 대답을 볼 수 있습니다. – anubhava

+0

지금까지 행운이 없습니다. 이제 .php 제거 문제가 있습니다. 친절하게도 위의 업데이트 된 htaccess 파일 내용을 편집하십시오. –