Подтвердить что ты не робот

.htaccess mod_rewrite - как исключить каталог из правила перезаписи

У меня есть 8 строк правил перезаписи в моем файле .htaccess. Мне нужно исключить из этих правил два физических каталога на моем сервере, чтобы они стали доступными. Пока все запросы отправляются в файл 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]
4b9b3361

Ответ 1

Попробуйте это правило перед другими правилами:

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

Это закончит процесс перезаписи.

Ответ 2

То, что вы также можете сделать, это поместить файл .htaccess, содержащий

RewriteEngine Off

В папках, которые вы хотите исключить из перезаписи (по правилам в файле .htaccess, который выше в дереве). Простой, но эффективный.

Ответ 3

добавить условие для проверки каталога администратора, например:

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]

Ответ 4

RewriteEngine On

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

Ответ 5

Мы использовали следующее правило mod_rewrite:

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

Это перенаправляет (постоянно с 301 перенаправлением) весь трафик на сайт http://www.newdomain.com, за исключением запросов к ресурсам в /test и/my-folder. Мы передаем пользователю точный ресурс, который они запрашивали, используя группу захвата (. *), А затем включающую $1 в новый URL. Запомните пробелы.

Ответ 6

Если вы хотите удалить конкретный каталог из правила (это означает, что вы хотите удалить каталог foo), вы можете использовать:

RewriteEngine on

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

В приведенном выше тексте rewriteRule будут переписаны все запросы /index.php, исключая запросы для /foo/.

Чтобы исключить все существующие конвейеры, вам нужно будет использовать следующее условие над вашим правилом:

RewriteCond %{REQUEST_FILENAME} !-d

следующее правило

RewriteEngine on

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

перезаписывает все (кроме директив) до /index.php.