htaccess, изменение главной директории сайта - PullRequest
0 голосов
/ 04 июля 2010

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

т.е. мой сайт - jeffkilroy.com, если я создаю домен для hello.com, он теперь также существует на jeffkilroy.com/hello

.

Это хорошо, за исключением того, что я хотел бы организовать его немного лучше, чтобы каталоги сайтов не смешивались с моими файлами jeffkilroy.com

Если я помещу все файлы сайта jeffkilroy.com в нечто, называемое «main», возможно ли поместить что-то в htaccess, где:

jeffkilroy.com / home действительно переходит на jeffkilroy.com/main/home

но все равно сможете легко получить доступ к моим материалам из корня (другие сайты): jeffkilroy.com/hello

1 Ответ

1 голос
/ 05 июля 2010

Это решение полностью зависит от того, что у вас нет папок в корневом каталоге (для других сайтов), имена которых совпадают с папками на главном сайте, но вы все равно хотите иметь возможность доступа к папкам других сайтов изкорень, здесь не так много путей.

В любом случае, это похоже на работу:

RewriteEngine On

# Let's prevent them from being able to go to our /main path manually
RewriteCond %{THE_REQUEST}       ^(POST|GET)\s/main
RewriteRule ^main/?(.*)$ http://jeffkilroy.com/$1 [R,L]

# Redirect stuff to /main/ if it isn't pointing to something else, or
# if it's just pointing to the primary root
RewriteCond %{REQUEST_URI}       ^/$
RewriteRule ^.*$ /main/$0

RewriteCond %{REQUEST_URI}      !-f
RewriteCond /main%{REQUEST_URI}  -f
RewriteRule ^.*$ /main/$0

RewriteCond %{REQUEST_URI}      !-d
RewriteCond /main%{REQUEST_URI}  -d
RewriteRule ^.*$ /main/$0 [L]

Примечание для любопытных: было бы неплохо иметь возможность сжать RewriteCond операторы с использованием флага [OR], но приоритет оператора отсутствует, поэтому он просто оценивается сверху вниз, что здесь не сработает.

...