2010-04-16 2 views
3

동일한 PHP/MySQL 구성으로 이전 호스팅 제공 업체에서 작동했기 때문에 Apache 구성에 문제가 있음을 확신합니다. paramater ID는 사진의 ID가 제거 될인코딩 된 매개 변수를 사용하여 URI를 요청할 때 404를 찾을 수 없음

http://example.com/my-account/remove-media/id/9/ret/my-account%252Fedit-album%252Fid%252F1 

이 매개 변수 RET는 사용자가 이후 리디렉션 할 상대 URL입니다 : 내 응용 프로그램에서 사용자는 다음과 같은 URI를 이동하여 사진을 삭제할 수 있습니다 사진의하지만 난 텍스트로 404 찾을 수 없음 오류를 얻을 같은 링크를 클릭 한 후 제거 :

Not Found 

The requested URL /public/my-account/remove-media/id/9/ret/my-account/edit-album/id/1 was not found on this server. 

그렇게 나는 그것이 그냥 쉽게 아파치 설정 추측 내 이전 호스팅 제공 업체에 작업하는 데 사용하지만 발행물?

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ /index.php [NC,L] 

답변

2

그것은이다 : MVC에 대한 두 번째 htaccess로 파일이 공용 폴더에

RewriteEngine On 

RewriteRule ^\.htaccess$ - [F] 

RewriteCond %{REQUEST_URI} ="" 
RewriteRule ^.*$ /public/index.php [NC,L] 

RewriteCond %{REQUEST_URI} !^/public/.*$ 
RewriteRule ^(.*)$ /public/$1 

RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^.*$ - [NC,L] 

RewriteRule ^public/.*$ /public/index.php [NC,L] 

:

한가지 더,/대중에게 문서 루트를 변경하는 htaccess로 파일이 아마도 AllowEncodedSlashes 지시문이 Off로 설정되어있을 것입니다. 나쁜 소식은 서버 수준에서 구성되므로 .htaccess가 수행하지 않는다는 것입니다. 변경되지 않았다면 인코딩되지 않은 문자열을 처리하도록 응용 프로그램 코드를 수정하는 것이 좋습니다.

.../ret/my-account%252Fedit-album%252Fid%252F1 -> .../ret/my-account/edit-album/id/1 

/ret/part가 항상 마지막 것일 경우, 그다지 문제가되지 않아야합니다 (ret가 모두 대상인 경우).

+0

글쎄, 나는 서버 관리자에게 해제하도록 요청할 것이다. 응용 프로그램을 수정하는 것은 너무 번거로운 일입니다. –

+0

이것은 문제가되었습니다. 사용하기 위해 응용 프로그램을 다시 작성해야했습니다./대신 str_replace (':', '/', $ requestVar)를 PHP에서 수행합니다. –

관련 문제