2013-02-21 3 views
1

웹 응용 프로그램에 "www.mysitename.com/foldername/controller/method"과 같은 URL 패턴이 있습니다. 그리고 요청 된 모든 페이지는 먼저 루트 폴더의 index.php로 리디렉션 된 다음 요청 된 페이지를 처리합니다. 하지만 관리자 패널 (www.mysitename.com/admin)을 방문 할 때마다 url은 "admin"을 폴더 이름으로 가져오고 관리자의 index.php를 보여줍니다 (이 방식에서는 정상적인 것입니다). controllername 또는 methodname이 인 경우 admin 폴더의 index.php를 통해 리디렉션되지 않습니다. 내가 "admin"을 방문 할 때마다admin 패널에 대한 htaccess 재 작성 규칙

나는,이 패턴의 URL은 "을 www.mysitename.com/admin/foldername/controller/method"합니다. 뿐만 아니라 admin을 통해 요청 페이지를 모두 admin 폴더의 index.php로 리디렉션해야합니다.

Options -Indexes 
    RewriteEngine on 

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

    RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 
+0

그래서에서 /htdocs/pro/.htaccess

Options -Indexes RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

관리자 htaccess로에서

루트 htaccess로, 아무것도'/ 관리 /' '/ admin/index.php'로 가야합니다. '/ index.php'가 아닌가요? – BenM

+0

예. '/ admin'을 가진 것은 admin 디렉토리의 index.php로 가야합니다. –

답변

6

당신이 당신의 admin 디렉토리에 .htaccess 파일이 있는가, 또는 루트 디렉토리에 한 - 여기 내 htaccess로 파일입니다? 각 디렉토리에 하나씩 있어야합니다.

.htaccess/htdocs/pro으로, .htaccess/htdocs/pro/admin으로 테스트했는데 설명대로 정확하게 작동했습니다. /htdocs/pro/admin/.htaccess

Options -Indexes 
RewriteEngine on 

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

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

단일 htaccess로 /htdocs/.htaccess에서 모두 파일이나 /htdocs/pro/.htaccess

Options -Indexes 
RewriteEngine on 

# Change '/pro/' if directory is renamed 
RewriteBase /pro/ 

# Change the '/pro/' portion of the condition if directory is renamed 
RewriteCond %{REQUEST_URI} ^/pro/admin(.+)$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(.+)$ admin/index.php?url=$1 [QSA,L] 

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

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 
+0

고마워요. 그게 .. htaccess 파일을 admin 디렉토리에 두지 않고서도 똑같이 작동 할 수있는 다른 것이 있습니까? –

+0

루트 dir에 배치 될 admin과 root dir을 모두 포함하는 단일'.htaccess'로 응답이 업데이트되었습니다. 먼저 admin uri에 일치하는 항목이 있는지 확인하고 그렇지 않으면 루트 uri로 간주합니다. – sjdaws

+0

나는 내 localhost에서 이것을 테스트하고있었습니다. localserver의 index.php로 리디렉션됩니다. ** htdocs **에서 ** pro **라는 디렉토리에 프로젝트가 있습니다. –