2012-10-23 3 views
0

htaccess에 관한 많은 질문이 있지만 Google 및 StackOverFlow에서 찾을 수있는 다른 코드를 시도했지만 아무 것도 작동하지 않았습니다.URL 폴더를 사용하여 다시 작성 및 리디렉션

나는 내 루트에 다음과 같습니다

index.php 
.htaccess (the one I am trying to write) 
controllers 
    --index.php 
    --mycontroller.php 
models 
    --mymodel.php 
view 
    -index.php 
    --myview.php 

내가 가지고있는 것은이 링크가

(내가 MAMP & 파이어 폭스와 로컬 호스트 작업입니다) 내가 원하는 무엇

localhost:8888/MySite/controllers/mycontroller.php 

is

localhost:8888/MySite/mycontroller 
내가 blabla에 갈 때

RewriteEngine On 
RewriteBase/
RewriteRule ^/(.*)$ /controllers/$1 [L] 

그것은 리디렉션하지 않습니다

내가 수동으로 URL을 입력 할 때, 내가 원하는 내가이 시도

내 MVC 코드에서 올바른 컨트롤러로 리디렉션 /controllers/mycontroller.php 그리고 수동으로 blabla/mycontroller에 갈 때 내가 무엇을 요구하는지 이해하지 못합니다. 당신의 기지가 /MySite/에있는 경우

답변

0

는 그것이 작동되도록하려면이나요. 그리고/MySite/controllers/foo를 실행하면 (물론) 작동하지만/MySite/foo ...로 다시 쓰지 않습니다. 무엇이 꺼져있을 수 있습니까? Btw, .htaccess가 실제로 읽혀지고 무시되지 않는지 어떻게 알 수 있습니까?
1

는 그것을 반영 할 필요가 RewriteBase : /MySite/foo 및 컨트롤러 디렉토리에 foo.php 파일이 있는지 /MySite/controllers/foo.php로 재 작성 :이 URI에 대한 요청을해야

RewriteEngine On 
RewriteBase /MySite/ 

# match against the php filename 
RewriteCond %{REQUEST_URI} ^/Mysite/(.*)$ 

# check to see if the request, routed through controllers actually points to an existing file 
RewriteCond %{DOCUMENT_ROOT}/MySite/controllers/%1.php -f 

# rewrite 
RewriteRule ^(.*)$ controllers/$1.php [L] 

.

RewriteEngine On 
RewriteBase /MySite/ 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^.*$ controllers/$0.php [L] 
+0

내가 코드 및 요청/내 사이트/foo를 시도하지만 (나는 내 ​​컨트롤러에서 foo는 파일이) 작동하지 않습니다 – Kalzem

+0

@BabyAzerty'RewriteRule^http://google.com/ [L, R]'을 추가하여 요청이 Google로 전송되는지 확인할 수 있습니다. 내 대답을 편집하여'% {REQUEST_URI} '의 마지막 경로 노드를 꺼내야한다는 것을 깨달았습니다. –