2013-04-28 19 views
0

가 여기 내 htaccess로 파일mod_rewrite를 서버 이동 후

## Turn on RewriteEngine 
RewriteEngine on 
Options +FollowSymlinks 

## Ignore 
RewriteRule  (slir) - [L,NC] 
RewriteRule  ^slir - [L,NC] 

## CakePHP 
RewriteRule  ^$  app/webroot/ [L] 
RewriteRule  (.*) app/webroot/$1 [L] 

이 내 옛날 호스트에서 잘 작동하는 데 사용하지만, HostGator에 이동하기 때문에, #ignore 아래의 두 가지 규칙이 작동 중지되어 작동이 중지. 다른 일을 시도하는 것은 단지 두 번뿐입니다.

기본적으로 모든 요청은 app/webroot로 보내지 만 "slir"이라는 폴더가 있으므로이 항목에서 제외됩니다.

두 번째 두 규칙은 어떻게 작동 하나 처음 두 개는 작동하지 않을 수 있습니까?

감사합니다.

답변

0

그것을이었다 :

# Prevent other scripts from interfering with SLIR 
php_value auto_prepend_file none 
php_value auto_append_file none 
두 줄을 주석 한 후 문제가

0

다시 쓰기 플래그 skip을 사용할 수 있습니다. 우리가 일치하는 항목을 찾을 경우, 다음 재 작성 규칙을 건너 :

RewriteEngine on 
Options +FollowSymlinks 

# If we have a match for slir anywhere in the REQUEST_URI 
# (case insensitive based on NC in supplied code) 
RewriteCond %{REQUEST_URI} [sS][Ll][Ii][Rr] 
# then skip 1 rule. 
RewriteRule .? - [S=1] 
#Match 0 or any character + and rewrite the URL. 
RewriteRule ^(.*)$ app/webroot/$1 [L] 
+0

내가 당신과 내 코드를 대체해야하고 여전히 같은 동작을 사라졌다. – 472084

+0

이 규칙들은 모두'.htaccess' 파일에 있습니까? '/ slir /'도 실제 디렉토리입니까? –

+0

예, 전 전체 파일을 게시 한 것으로 교체했습니다. – 472084

0

당신이 시도 할 수 있습니다 : htaccess로 파일 내부/SLIR /이 있었기 때문에 결국

RewriteEngine on 
RewriteBase/
Options +FollowSymlinks 

# Send all requests that do not start with `/slir` to the webroot. 
RewriteCond %{REQUEST_URI} !^/slir 
RewriteRule ^(.*)$ app/webroot/$1 [L]