Ответ 1
Попробуйте это правило перед другими правилами:
RewriteRule ^(admin|user)($|/) - [L]
Это закончит процесс перезаписи.
У меня есть 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]
Попробуйте это правило перед другими правилами:
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]
RewriteEngine On
RewriteRule ^(wordpress)($|/) - [L]
Мы использовали следующее правило 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. Запомните пробелы.
Если вы хотите удалить конкретный каталог из правила (это означает, что вы хотите удалить каталог 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.