Mam 8 wierszy reguł przepisywania w moim pliku .htaccess. Muszę wykluczyć z tych reguł dwa fizyczne katalogi na moim serwerze, aby stały się dostępne. Na razie wszystkie żądania są wysyłane do pliku index.php.
Katalogi do wykluczenia: „admin” i „user”.
Dlatego żądania http: http://www.domain.com/admin/ nie powinny być przekazywane do pliku 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]
.htaccess
mod-rewrite
url-rewriting
kelwin
źródło
źródło
[^/]
ponieważ zwykła spacja, jeśli nie jest tam dozwolona (musi zostać usunięta\<space>
).Odpowiedzi:
Wypróbuj tę regułę przed innymi zasadami:
To zakończy proces przepisywania.
źródło
($|/)
powinna obsługiwać oba przypadki.RewriteCond
zawsze wymaga znaku , doRewriteRule
którego jest dołączony. A dodanie tego warunku jako zanegowanegoRewriteCond
do każdegoRewriteRule
może być dość nieporęczne, pojedynczeRewriteRule
jako wyjście powyżej tych, które należy zignorować w takim przypadku, jest bardziej eleganckie.Możesz również umieścić plik .htaccess zawierający
W folderach, które chcesz wykluczyć z przepisywania (zgodnie z regułami w pliku .htaccess znajdującym się wyżej w drzewie). Proste ale efektywne.
źródło
AllowOverride
na cokolwiek innego niżNone
w konfiguracji apache) zmusza apache do szukania .htaccess przy każdym żądaniu. więc jeśli masz często odwiedzaną witrynę / serwer sieciowy, dostęp do systemu plików / dysku twardego może mieć ogromny wpływ na wydajność ...dodaj warunek sprawdzania katalogu administratora, na przykład:
źródło
Jeśli chcesz usunąć określony katalog z reguły (czyli chcesz usunąć katalog foo ), możesz użyć:
Reguła rewriteRule powyżej przepisuje wszystkie żądania do /index.php z wyłączeniem żądań / foo / .
Aby wykluczyć wszystkie istniejące katalogi, musisz zastosować następujący warunek nad regułą:
następująca zasada
przepisuje wszystko (oprócz katalogów) do /index.php .
źródło
Użyliśmy następującej reguły mod_rewrite:
To przekierowuje (trwale z przekierowaniem 301) cały ruch do witryny na http://www.newdomain.com , z wyjątkiem żądań do zasobów w katalogach / test i / my-folder. Przenosimy użytkownika do żądanego zasobu, używając grupy przechwytywania (. *), A następnie dodając 1 USD do nowego adresu URL. Uważaj na przestrzenie.
źródło
źródło