2013-08-30 4 views
2

Apache의 RewriteRule을 사용하여 URL을 다시 쓰고 싶은 사이트가 있습니다.Apache 다시 쓰기 규칙은 로컬 호스트에서는 작동하지만 서버에서는 작동하지 않습니다.

에 다시 작성하고 성공적으로 작동 : 내가 원하는

RewriteEngine On 
RewriteRule ^/p/(.*) /index.php?p=$1 [PT] 

나는 서버에서 똑같이하려고 노력하고있다. 은 내가 /public_html/.htaccess에 동일한 아파치 코드를 추가 한하지만 난 아래의 오류 메시지가 얻을 :


요청 된 URL/P/홈
이 서버에서 찾을 수 없습니다 찾을 수 없습니다. 또한 ErrorDocument를 사용하여 요청을 처리하는 동안 404 찾을 수 없음 오류가 발생했습니다.

정확하게 동일한 코드가 내 localhost 서버에서 작동합니다. 왜 내 웹 사이트에 없습니까?

답변

5

원격 서버의 아파치가 "AllowOverride All"을 지원합니까?

이렇게하면 도움이 될 수도 있습니다.

RewriteEngine On 
RewriteRule ^p/(.*) /index.php?p=$1 [PT] 

그러나 $ _GET [ 'p']을 올바르게 수정해야 할 수도 있습니다. "집"부분 만 보내질 것입니다.

+0

대단히 감사합니다. – atomikpanda

3

다시 쓰기 규칙의 패턴에서 선행 슬래시를 제거해야합니다. 다시 쓰기 엔진이 htaccess 파일에 규칙을 적용 할 때 URI 앞에 슬래시가 제거되었습니다.

RewriteEngine On 
RewriteRule ^p/(.*) /index.php?p=$1 [PT] 
1
<IfModule mod_rewrite.c> 

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\.baileyseymour\.com 
RewriteRule ^(.*)$ http://www.baileyseymour.com/$1 [R=301,L] 

</IfModule> 

.htaccess는 파일을 넣기에 적합한 장소이며 파일은 기본 홈 페이지와 같은 디렉토리에 있어야합니다.

관련 문제