htaccess, изменение основного каталога сайта

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

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

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

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

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

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


person kilrizzy    schedule 04.07.2010    source источник


Ответы (1)


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

Во всяком случае, это, кажется, работает:

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], но здесь нет приоритета операторов, поэтому он просто оценивается сверху вниз, что здесь не сработает.

person Tim Stone    schedule 04.07.2010