У меня есть 8 строк правил перезаписи в моем файле .htaccess. Мне нужно исключить две физические директории на моем сервере из этих правил, чтобы они могли стать доступными. На данный момент все запросы отправляются в файл index.php.
Каталоги для исключения: «админ» и «пользователь».
Поэтому запросы 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]
.htaccess
mod-rewrite
url-rewriting
кельвин
источник
источник
[^/]
как простое пространство, если не разрешено там (с ним должно быть экранировано\<space>
).Ответы:
Попробуйте это правило перед вашими другими правилами:
Это завершит процесс переписывания.
источник
($|/)
должно обрабатывать оба случая.RewriteCond
всегда требует,RewriteRule
чтобы он был прикреплен к. И добавление этого условия в качестве отрицательногоRewriteCond
к каждомуRewriteRule
может быть довольно громоздким, единственноеRewriteRule
в качестве выхода выше тех, которые следует игнорировать в таком случае, более элегантно.Что вы также можете сделать, это положить файл .htaccess, содержащий
В папках, которые вы хотите исключить из перезаписи (по правилам в файле .htaccess, который находится выше в дереве). Простой, но эффективный.
источник
AllowOverride
на что-либо другое, кромеNone
конфигурации apache) заставляет apache искать .htaccess при каждом запросе. так что если у вас часто посещаемый веб-сайт / веб-сервер, доступ к файловой системе или жесткому диску может оказать огромное влияние на производительность ...добавьте условие для проверки каталога администратора, например:
источник
Если вы хотите удалить конкретный каталог из правила (то есть вы хотите удалить каталог foo ), вы можете использовать:
Приведенное выше rewriteRule перезапишет все запросы в /index.php, за исключением запросов для / foo / .
Чтобы исключить все существующие директории, вам нужно использовать следующее условие над правилом:
следующее правило
переписывает все (кроме директорий) в /index.php .
источник
Мы использовали следующее правило mod_rewrite:
Это перенаправляет (постоянно с перенаправлением 301) весь трафик на сайт на http://www.newdomain.com , за исключением запросов к ресурсам в каталогах / test и / my-folder. Мы переводим пользователя в точный ресурс, который он запрашивал, используя группу захвата (. *), А затем добавляя $ 1 в новый URL. Следите за пробелами.
источник
источник