2013-09-01 2 views
0

먼저 작동하지 않습니다,이 몇 가지 질문이 알고 있지만 제가 경험하는 것은이 규칙이 작동하지 않는 동안 다른 규칙이 .PHP 확장자를 제거처럼 작동한다는 것입니다 :간단한 URL 재 작성이

RewriteRule ^hello$ marketplace [NC,R=301] 

이것은 단순한 테스트 일 뿐이며 작동하지 않습니다. URL은 여전히 ​​시장이며 안녕하세요. 그리고 내가 가지고있는 다른 모든 규칙을 제거하려고 시도했는데 위의 규칙을 htaccess 파일에만 존재하도록 만들었지 만 여전히 작동하지는 않습니다.

아이디어가 있으십니까? mod_rewrite는 다른 규칙이 작동하기 때문에 분명히 켜져 있습니다.

는 테스트 및 작동하지 :

RewriteRule ^marketplace$ /hello [NC,R=301] 

답변

1

Highly recommend you to give a read on this "Apache mod_rewrite Introduction"

Options +FollowSymLinks -MultiViews 

RewriteEngine On 
RewriteBase/

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.*)\.php [NC] 
RewriteRule^/%1 [R=301,QSA,L] 

# Redirect to hello 
RewriteRule ^marketplace$ /hello [R=301,NC,L] 
# Show the content of marketplace on hello 
RewriteRule ^hello$ /marketplace.php [NC,L] 

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

위는 완벽하게 테스트 및 근무 규칙입니다. 예를 domain.com/marketplace.php에 대한 URL의 같은 디렉토리에 .php 리디렉션됩니다

첫 번째 규칙은 domain.com/marketplace된다.

두 번째 규칙은 hello-marketplace 리디렉션합니다.

세 번째 규칙은 내부적으로 hellomarketplace.php의 내용에 hello 그래서 URL이 남아 marketplace.php에 리디렉션합니다.

마지막 규칙은이 디렉토리에 존재하지 않는 확인하지만 PHP 파일로 존재하고 여기에 내부적으로 리디렉션합니다. 당신이 marketplace.php에 액세스하는 경우

는 그래서 marketplace 다음 hello과 인사 당신이 marketplace.php의 내용을 볼 수 있습니다에서 이동합니다. marketplace.php이 존재하지 않는 경우

당신은 404 오류가 발생합니다.

+0

나는 장소를 바꾼 것을 보았지만, 여전히 다른 방향으로 움직이지는 않았다. 아직 리디렉션이 없습니다. 내 편집 좀 봐. – Curtain

+0

아니요, 하나만 있습니다. – Curtain

+0

아니요, URL은 사실 marketplace.php입니다. 나는 .php 확장자를 제거하고 "마켓 플레이스"만 만들 규칙이 있습니다. 이제 저는 시장을 안부로 바꾸기 위해 시험하고 싶습니다. – Curtain

관련 문제