Как перенаправить все, кроме рута и некоторых папок в htaccess - PullRequest
0 голосов
/ 27 января 2019

Я ищу код .htaccess, который перенаправит весь трафик на mydomain.com на example.com/folder1, за исключением корневого каталога example.com и folder2, folder3 и folder4.Summery: URL для перенаправления - все файлы и папки на example.com Перенаправление на - на example.com/folder1 Исключение - root, folder2, folder3, folder4

RewriteEngine on 
RewriteBase / 
RewriteCond %{HTTP_HOST} ^example\.com$ 
RewriteCond %{REQUEST_URI} !^/folder1(/|$) 
RewriteCond %{REQUEST_URI} !^/folder2(/|$) 
RewriteCond %{REQUEST_URI} !^/folder3(/|$) 
RewriteCond %{REQUEST_URI} !^/folder4(/|$)

RewriteRule ^$ https://example.com/folder1 [L,R=301]

РЕДАКТИРОВАТЬ: Пытался использовать вышеуказанный код дляперенаправить, но не уверен, что сам код имеет проблемы, потому что он не работает должным образом.В чем может быть проблема?Проблема: я хочу, чтобы перенаправление исключало домашнюю страницу, папку 2, папку 3, папку 4, в противном случае все перенаправляли бы в папку folder1

1 Ответ

0 голосов
/ 27 января 2019

Благодаря вашим комментариям и дополнительной информации, которую вы задали, вопрос стал более понятным.

Я предлагаю этот набор правил, он должен приблизить вас к тому, чего вы пытаетесь достичь, хотя для этого все еще может потребоваться доработка ...

RewriteEngine on 
RewriteBase / 
RewriteCond %{HTTP_HOST} ^example\.com$ 
RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{REQUEST_URI} !^/folder1/?
RewriteCond %{REQUEST_URI} !^/folder2/?
RewriteCond %{REQUEST_URI} !^/folder3/?
RewriteCond %{REQUEST_URI} !^/folder4/?
RewriteRule ^/?(.*)$ https://example.com/folder1/$1 [END,R=301]

Этот набор правил будет работать аналогично в конфигурации хоста http-серверов или внутри файла динамической конфигурации (файл ".htaccess"). Очевидно, что модуль перезаписи должен быть загружен внутри http-сервера, и в случае, если вы используете файл динамической конфигурации, вам нужно позаботиться о том, чтобы его интерпретация была включена вообще в конфигурации хоста и чтобы он находился в папке DOCUMENT_ROOT хоста.

И общее замечание: вы всегда должны размещать такие правила в конфигурации хоста http-серверов, а не использовать файлы динамической конфигурации (".htaccess"). Эти динамические конфигурационные файлы добавляют сложность, часто являются причиной неожиданного поведения, их трудно отладить, и они действительно замедляют работу http-сервера. Они предоставляются только в качестве последнего варианта для ситуаций, когда у вас нет доступа к реальной конфигурации хоста http-серверов (читай: действительно дешевые поставщики услуг) или для приложений, настаивающих на написании своих собственных правил (что является очевидным кошмаром безопасности).

...