2011-11-21 5 views
0

내 페이지에 로그인 폴더가 있습니다. domain.com/login/을 입력하면 올바르게 폴더로 이동합니다. 내가 domain.com/login 를 쓸 때 그것은 또한 페이지하지만 내 다른 주요 링크 domain.com/company과 같다RewriteRule이 폴더와 충돌합니다

domain.com/login/?cname=login 에 URL 변경을 엽니 다 올바르게 작동합니다. 그러나 만약 내가 domain.com/company/ 작성 sais 개체를 찾을 수 없습니다.

어떻게 해결할 수 있습니까?

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^/$ 
RewriteCond %{REQUEST_URI} !^/domain.com/index.(php|html?) 
# domain.com/login 
RewriteRule ^/login?$ /domain.com/login/index.php 
# domain.com/abc 
RewriteRule ^([a-z0-9]+)?$ /domain.com/profile/company-profile.php?cname=$1 [NC,L] 

답변

1

domain.com/login/ 또는 domain.com/login을 사용하려는 경우 로그인 폴더로 이동합니다. 아래 규칙은 모든 폴더의 끝에 슬래시가 오도록하여 domain.com/login이 작동하도록합니다.

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301] 

다음 규칙에 따라 domain.com/company/가 작동합니다. 위의 규칙과 함께 domain.com/company가 계속 작동하도록 할 것입니다.

RewriteRule ^company/$ profile/company-profile.php?cname=company [NC,L] 

다른 규칙은 잘못 입력 했으므로 삭제해야합니다.

로 마지막 규칙을 수정 마지막 응답을 바탕으로

편집

모든 URI의 로그인을 제외 할 재 작성 회사 규칙에 대한

RewriteCond %{REQUEST_URI} !=/login/ [NC] 
RewriteRule ^([a-z0-9]+)/$ profile/company-profile.php?cname=$1 [NC,L] 

즉.

+0

고맙습니다. 이게 어떻게 작동하는지 이해하는 데 정말로 도움이되었습니다. 그러나 회사는 그저 하나의 예일 뿐이며 어떤 이름이든 상관 없습니다. 어떻게 바꿀 수 있습니까? – EnexoOnoma

+0

이'RewriteRule^([a-z0-9] +)/$ /profile/company-profile.php?cname = $ 1 [NC, L]'회사 대신 나를 게시했지만 로그인이 엉망이됩니다 – EnexoOnoma

+0

곧 답변이 업데이트 될 것입니다. –

0

# 개의 RewriteCond는 다음 RewriteRule에만 적용된다는 것을 알고 있어야합니다. 왜 REQUEST_URI에 대해 RewriteRond와 일치하는지 이해하지 못합니다. RewriteRule의 일부로 만 일치시키는 것이 아닙니다.

^/login?$ RewriteRule을 사용하여 수행하려는 작업을 정확히 이해하지 못합니다. 나는 '?'을 추측하고있다. 이스케이프해야합니다. 그렇지 않으면 문자 그대로 "/login"또는 "/logi"과 일치하도록 요청합니다.

위의 문제로 인해 "domain.com/login"요청이 "cname ="이 (가) 포함 된 두 번째 RewriteRule에 의해 처리되고있는 것으로 추측됩니다. "company-profile.php"도 볼 수 있습니다 (귀하의 질문에 어쩌면 감독으로 가정)?

위의 내용을 고려하고 조금 더 단순화하려고 시도한 후에 모든 것이 제자리에 있어야한다고 생각합니다. 그렇지 않다면 의견을 남겨주세요. 그러면 우리가 할 수있는 일을 볼 수 있습니다.

+0

진실은 htaccess에 익숙하지 않고 웹에서 약간의 수치를 통해이를 구축했다는 것입니다. 내 코드가 어떻게되어야하는지 알려 주시면 좋을 것 같습니다. – EnexoOnoma

+0

다시 쓰기 규칙은 .htaccess와 관련이 없지만 더 큰 Apache 구성의 일부입니다. http://httpd.apache.org/docs/current/rewrite/이 훌륭한 가이드입니다. 울리히가 이미 당신에게 필요한 것을 가장 많이 준 것 같네요. :-) – ziesemer

관련 문제