[.htaccess] .htaccess mod_rewrite-재 작성 규칙에서 디렉토리를 제외하는 방법

내 .htaccess 파일에 8 줄의 다시 쓰기 규칙이 있습니다. 이 규칙에서 서버의 물리적 디렉토리 두 개를 제외해야 액세스 할 수 있습니다. 지금은 모든 요청이 index.php 파일로 전송됩니다.

제외 할 디렉토리 : “admin”및 “user”

따라서 http 요청 : http://www.domain.com/admin/ 은 index.php 파일로 전달해서는 안됩니다.

ErrorDocument 404 /index.php?mod=error404

Options  FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

RewriteRule ^([^/] )/([^/] )\.html$ index.php?lang=$1&mod=$2 [L]
RewriteRule ^([^/] )/$ index.php?lang=$1&mod=home [L]



답변

다른 규칙보다 먼저이 규칙을 시도하십시오.

RewriteRule ^(admin|user)($|/) - [L]

다시 쓰기 과정이 종료됩니다.


답변

당신이 할 수있는 일은 포함 된 .htaccess 파일을 넣는 것입니다.

RewriteEngine Off

트리에서 더 높은 .htaccess 파일의 규칙에 따라 다시 쓰지 않으려는 폴더에서. 간단하지만 효과적인.


답변

다음과 같이 관리 디렉토리를 점검하기위한 조건을 추가하십시오.

RewriteCond %{REQUEST_URI} !^/?(admin|user)/
RewriteRule ^([^/] )/([^/] )\.html$ index.php?lang=$1&mod=$2 [L]

RewriteCond %{REQUEST_URI} !^/?(admin|user)/
RewriteRule ^([^/] )/$ index.php?lang=$1&mod=home [L]


답변

규칙에서 특정 디렉토리를 제거하려면 (즉, foo 디렉토리를 제거하려는 경우 ) 다음을 사용할 수 있습니다.

RewriteEngine on

RewriteCond %{REQUEST_URI} !^/foo/$
RewriteRule !index\.php$ /index.php [L]

위의 rewriteRule 은 / foo / 요청을 제외한 모든 요청을 /index.php에 다시 작성합니다 .

존재하는 모든 디렉토리를 제외하려면 규칙 위에 다음 조건을 사용해야합니다.

RewriteCond %{REQUEST_FILENAME} !-d

다음 규칙

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !index\.php$ /index.php [L]

/index.php에 모든 것을 (디렉토리 제외) 재 작성합니다 .


답변

다음과 같은 mod_rewrite 규칙을 사용했습니다.

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/test/
RewriteCond %{REQUEST_URI} !^/my-folder/
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

이는 / test 및 / my-folder 디렉토리의 리소스에 대한 요청을 제외하고 사이트에 대한 모든 트래픽을 http://www.newdomain.com 으로 리디렉션합니다 (301 리디렉션으로 영구적으로) . (. *) 캡처 그룹을 사용하고 새 URL에 $ 1을 포함시켜 요청한 정확한 리소스로 사용자를 이동시킵니다. 공간을 염두에 두십시오.


답변

RewriteEngine On

RewriteRule ^(wordpress)($|/) - [L]


답변