2015-01-30 12 views
-1

나는 다음과 같이 URL을 다시 찾고 있어요 상위 폴더에 하위 폴더로 배수 파일을 리디렉션 :
에서 :htaccess로는

http://localhost/system/view/mod001/m1_file_01.php (or any file inside mod001) 
or 
http://localhost/system/view/mod002/m2_file_01.php (or any file inside mod002) 

내 말은

http://localhost/system/m?_file_01.php 

으로, 숨기기 /를 제거 폴더와 (mod001 | mod002 | mod003 | 등) 폴더가 표시되지 않았습니다.

이 내 폴더 구조입니다 :

-system/ 
    .htaccess 
    index.php 
    view/ 
     mod001/ 
      m1_file_01.php | m1_file_02.php | ... 
     mod002/ 
      m2_file_01.php | m2_file_02.php | ... 
     media/ 
      css/ | js/ | ... 

그리고 이것은 내 htaccess로 내가 할 수있는 방법

RewriteEngine On 
#RewriteBase/#Yeah is commented 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule . /system/ [L,R=301] 

입니까?

답변

1

modXXX에 가능한 세 자리 숫자마다 다른 규칙이 필요할 수 있습니다. 실제로 패드를 정규식으로 채울 수 없기 때문입니다. 이런 식으로 뭔가를 작동 할 수 있습니다,하지만 난 그것을 테스트하지 않은 : 나는 무엇을 볼 수에서

#match 1 digit 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (m([0-9])_.*\.php) view/mod00$2/$1 [QSA,L] 

#match 2 digits 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (m([0-9][0-9])_.*\.php) view/mod0$2/$1 [QSA,L] 

#match 3 digits 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (m([0-9][0-9][0-9])_.*\.php) view/mod$2/$1 [QSA,L] 
+0

이것은 유용하다. 그러나 나는 나의 예에서 잘 설명하지 못했다. 폴더 내의 파일 mod001 | mod002는 어떤 이름 (정확하게 'm1_'으로 시작하지 않음)을 가질 수 있으며 그 폴더 내에 같은 이름을 가진 두 개의 파일이 없을 수 있습니다 (즉, hola.php라는 파일이 'mod001'폴더에 존재한다면, mod002 또는 mod003 폴더에, hola.php 파일이 없을 것입니다.) .php –

+0

@ ManuelFernándezLévano 다음은 .htaccess로 수행 할 수 없으며 다른 방법으로는별로 좋지 않을 것입니다. 그것을 할 수있는 유일한 방법은 단일 PHP 스크립트에 모든 요청을 라우팅하고 그것이 더 많은 폴더를 검색 할 때 더 많은 장소를 검색해야하기 때문에 성능에 끔찍한 요청한 파일을 찾을 때까지 모든 폴더를 검사해야합니다. –

+0

그것이 내가 두려워했던 것입니다. 많이 생각하고 .htaccess에 대해 많이 알지 못해서, 나는 PHP로 그것을하기로 결정했다. 어쨌든 도움을 주셔서 대단히 감사합니다. –

1

이 좋아, 이제 당신이 m1_file_02.php을 얻으려면 다음 당신이 얻을하려는 가정 해 봅시다 m2_file_02.php 서버가 당신이 요청을 보낼 forwhich 정확한 파일/폴더를 추측 할 수있는 방법 ? 각 폴더에 고유 한 식별자를 지정해야합니다. 어쨌든 http://localhost/system/m?_file_01.php 당신이 준 구조를 사용할 수 없습니다.

+0

이 파일은 m2'이 mod002''에 해당하는'mod001''에 해당 m1' '로 시작합니다. 0으로 세 자리까지 채워진 채로 표시됩니다. –