2009-08-24 8 views
1

그래서, 내가 설정이 젠드 스타일을 FrontController있어. 기본적으로 모든 URL을 다시 색인으로 리디렉션합니다.mod_rewrite를 noobie 질문

URL은 나는 다음과 같은 형태로 일부 바로 가기를 만들 싶습니다/controller/view/ + [additional parameters]

의 형태에 있습니다

RewriteRule ^home /home/index 
RewriteRule ^products /products/view 

RewriteRule .* index.php 

그러나, mod_rewrite를 내 재 작성 규칙을 무시하는 것 같다. 비록 내가 그 비트를 잡을 수 있어야한다는 것이 확실하다 할지라도, 집/인덱스로 집을 변경하지는 않습니다. 그래서, 요청 uri의 이름을 바꾸는 것과 관련이 있다고 생각합니까?

는 여기에 htaccess로 파일입니다 :

Options +FollowSymLinks 
RewriteEngine on 

RewriteRule ^admin/ - [L] 
RewriteRule ^media/ - [L] 

RewriteRule ^home  home/index 
RewriteRule ^products products/view 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* index.php 
+0

규칙은 전혀 작동하지 않거나 (* index.php에 *를 처리 할 수 ​​없습니다) 잘못된 단지 예상 결과 않습니까? 후자의 경우,'$ _SERVER [ 'REQUEST_URI']'에는 어떤 값이 들어 있습니까? – Gumbo

+0

$ _SERVER [ 'REQUEST_URI']는 원래의 uri (home 또는 products)를 포함합니다. 마치 그것을 잡을 수 있다고 확신하더라도 REQUEST_URI를 변경할 수없는 것 같습니다. 따라서 모든 것을 index.php로 되돌려 줄 마지막 줄에 도달 할 때까지는 변경되지 않은 그대로 취급합니다. – JHollanti

+0

흠, REQUEST_URI는 재 작성 중이며 리디렉션하지 않기 때문에 동일하게 유지되어야합니다. REQUEST_URI를 원하면 별도의 줄을 쓸 수 있습니다. 당신은 당신의 집과 제품 라인에서 마지막 규칙을 나타내는 [L]을 사용하지 마십시오. 즉, 다른 경기를 계속 찾습니다. 내 대답을 조정했습니다. – Fabian

답변

0

은 지금까지 나는이 많이 냈어요.

REQUEST_URI을 변경하기 위해 RewriteRule을 사용하면 REQUEST_URI을 실제로 변경하지 않고 REDIRECT_URI이라고하는 다른 변수를 변경합니다. 왜 그런 일이 일어나고 있는지 설명합니다. 이 효과에

RewriteRule ^products products/view [NC,L] 

뭔가가 파비안 제안 하였다 :

또한, 흥미롭게도, 난이 뭔가를 할 수 있습니다. 그는 단지 끝에 index.php를 추가했는데, 그것은 나를 위해 작동하지 않았습니다. index.php를 나가면 모든 것이 완벽하게 작동합니다. 그리고 어떻게 든 마술처럼 그것은 모든 것을 index.php로 리디렉션합니다.

그래서 지금, 모든 작업,하지만 난 왜 모든 것이 작동에 대한 단서를 가지고하지 않았습니다. 여기에서 무슨 일이 일어나고 있는지를 설명 할 수있는 사람에게는 누구나 upvote가 있습니다. 그 때까지는 RTFM 만있을 거라고 생각해.

0

다음 규칙은 모든 것을 잡아, 그래서의 경우 상단에 그것은 다른 어떤 규칙을 고려하지 않습니다.

RewriteRule .* index.php 

는 다음과 같이 해보십시오

Options +FollowSymLinks 
RewriteEngine on 

RewriteRule ^admin/  - [L] 
RewriteRule ^media/  - [L] 

RewriteRule ^home  home/index [L] 
RewriteRule ^products products/view [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .*   index.php 
+0

예, '리디렉션하는 모든 항목을 인덱싱'비트는 끝에 만 위치합니다. 미안합니다. 그래도 여전히 작동하지 않습니다. – JHollanti

+0

전체 .htaccess 파일을 추가 할 수 있습니까? – Fabian

+0

좋아, 질문의 일부로 편집했습니다. – JHollanti

0

후자는 /home로 시작 않는 한 단지 /home/index/home로 시작하는 모든 것을 재 작성하려고하면이 문제를 얻을 수 있습니다. 다음과 같이 더 구체적인 패턴을 사용해야합니다.

RewriteRule ^home$ home/index 
RewriteRule ^products$ products/view 

나머지는 잘 작동합니다.

+0

효과가 없습니다. – JHollanti