.htaccess mod rewrite - jak wykluczyć katalog z reguły rewrite

Mam 8 linijek reguł przepisywania w moim .plik htaccess. Muszę wykluczyć dwa fizyczne katalogi na moim serwerze z tych reguł, aby mogły stać się dostępne. Na razie wszystkie żądania są wysyłane do indeksu.plik php.

Katalogi do wykluczenia: "admin" i "user".

Więc żądania http: http://www.domain.com/admin/ nie powinny być przekazywane do indeksu.plik 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]
Author: Tunaki, 2009-12-04

6 answers

Wypróbuj tę zasadę przed innymi zasadami:

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

To zakończy proces przepisywania.

 248
Author: Gumbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-04 17:51:12

To, co można również zrobić, to umieścić .plik htaccess zawierający

RewriteEngine Off

W folderach, które chcesz wykluczyć z przepisywania (według zasad w .plik htaccess, który jest wyżej w drzewie). Proste, ale skuteczne.

 91
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-12 11:27:42

Dodaj warunek do sprawdzenia katalogu admina, coś w stylu:

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]
 18
Author: Rob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-04 17:48:15
RewriteEngine On

RewriteRule ^(wordpress)($|/) - [L]
 4
Author: user3578691,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-27 16:47:12

Użyliśmy następującej reguły mod_rewrite:

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

To przekierowuje (na stałe z przekierowaniem 301) cały ruch na stronę do http://www.newdomain.com , z wyjątkiem zapytań do zasobów w katalogach / test i / my-folder. Przenosimy użytkownika do dokładnego zasobu zażądali za pomocą (.* ) przechwyć grupę, a następnie dodaj $1 do nowego adresu URL. Uważaj na przestrzenie.

 4
Author: Camilo Tilaguy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-26 14:10:43

Jeśli chcesz usunąć konkretny katalog z reguły (co oznacza, że chcesz usunąć katalog foo), możesz użyć :

RewriteEngine on

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

RewriteRule powyżej przepisze wszystkie żądania do / index.php z wyłączeniem żądań dla / foo / .

Aby wykluczyć wszystkie istniejące directries, musisz użyć następującego warunku powyżej Twojej reguły:

RewriteCond %{REQUEST_FILENAME} !-d

Następująca reguła

RewriteEngine on

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

Przepisuje wszystko (z wyjątkiem directries) na /indeks.php .

 3
Author: starkeen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-05 17:21:07