2014-06-20 2 views
0

이것은 해결책을 찾고있는 질문이 아니며, 약간의 설명이 필요한 질문입니다.Modrewrite 로컬 호스트에서는 작동하지만 서버에서는 작동하지 않습니다.

며칠 전 localhost (XAMPP 실행)에서 제대로 작동하는 mod_rewrites를 사용하여 제작 서버 (CentOS 6 램프 스택)에서 작동하는 데 많은 어려움을 겪고있었습니다.

로컬 호스트에
RewriteEngine On 
RewriteBase/

RewriteRule ^my/page/([a-zA-Z0-9]+)$ /my/page/$1/ 
RewriteRule ^my/page/([a-zA-Z0-9]+)/$ /my_page.php?t=$1 

, 위의 라인이 완벽하게 작동하고 다음을 수행 : 위의 규칙이 효과가없는 한 내 프로덕션 서버에서, 그러나

my/page/ab123 --> my_page?t=123 

다시 쓰기는이처럼 보였다 . 나는 mod_rewrites와 서버 아키텍쳐에 대해 매우 새롭기 때문에 솔루션을 찾는 것이 몇 시간이나 걸렸다. 이제 솔직히 아무런 단서도 없었기 때문에 아래에서 왜 내 문제를 해결했는지 알고 싶습니다.

RewriteEngine On 
RewriteBase/

RewriteRule ^/my/page/([a-zA-Z0-9]+)$ /my/page/$1/ 
RewriteRule ^/my/page/([a-zA-Z0-9]+)/$ /my_page.php?t=$1 

간단한 변화였습니다. 페이지 이름 앞에 슬래시를 추가해야했습니다. ^/my/page

항상이 추가 문자를 추가 할 필요없이 내 서버로 내 htaccess 파일을 옮기고 싶습니다. 이 문제를 해결할 방법이 있습니까?

또한, 다음과 같은 옵션이 내 httpd.conf 파일

<Directory /my/sites/directory> 
     Options -Indexes +Multiviews +FollowSymLinks 
     DirectoryIndex index.php index.html 
     AllowOverride All 
     Allow from all 
</Directory> 

답변

0

선행 슬래시가 필요하거나 규칙의 상황에 따라 필요하지 않습니다에 나타납니다. 규칙이 htaccess 파일 (또는 디렉토리 컨텍스트 당)에 있으면, 선행 슬래시는 필요하지 않습니다. 규칙이 server/vhost 설정에 있다면 선행 슬래시가 필요합니다. 아파치 버전이 v2.2 (또는 2.0, 기억할 수 없음)보다 낮 으면, 항상 선행 슬래시가 필요합니다.

RewriteEngine On 
RewriteBase/

RewriteRule ^/?my/page/([a-zA-Z0-9]+)/?$ /my_page.php?t=$1 

즉, 선도을거야, 그리고 후행는 옵션 슬래시 : 당신은 그냥이 할 경우

아마 좋습니다.

+0

알아두면 좋겠어. 내 질문에 완벽하게 대답합니다. 고맙습니다 –

관련 문제