2010-08-19 4 views
2

Есть ли способ сделать .htaccess сказать папке действовать как самый низкий уровень? То, что я имею в виду это, что у вас есть папка, как так:.htaccess сделать папку действовать как root?

 
/about/ 
/contact/ 
/css/ 
/images/ 
.htaccess 
index.php 
header.php 

Если они находятся на /contact/index.php, то, если у меня есть <a href="../index.php">Home</a>, чтобы перейти на главную страницу, она работает все хорошо, но если они находятся на фактическая главная страница, она попытается перейти в каталог ниже.

Причина в том, что я пытаюсь проверить сайты в подпапках.

+1

Вы можете уточнить? Что вы подразумеваете под «тогда, если у меня есть Home, чтобы перейти на домашнюю страницу»? – Teekin

ответ

4

Ответьте прямо на ваш вопрос, ответ нет. К моменту чтения .htaccess путь уже переводится в каталог.

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

Вы также можете сделать свой сайт работать, когда его нет в корневом каталоге.

  • Правильно использовать относительные пути ("../index.php" в "/contact/index.php" и "index.php" в корневых веб-страницах). Не отличный вариант.
  • Используйте абсолютные пути, но прикрепите их к пути веб-сайта относительно корня сервера. Самый надежный способ сделать это, установить константу для этого в файле, который вы включаете во все ваши скрипты.
1

Это немного взломано ... но вы можете создать папку/home и поместить туда дублируемую копию вашего index.php. Опять же, это полный взлом, но он должен решить то, что вы пытаетесь сделать.

Еще одна вещь, которую следует учитывать, - использовать mod_rewrite в .htaccess для поиска/home и маршрутизации в корневой каталог.

0

На /contact/index.php можно связать основной index.php с помощью

<a href="/index.php">Link</a> 
+0

Это не было совершенно ясно из вопроса, но причина, по которой он не может этого сделать, потому что он тестирует сайт в подкаталоге, то есть цель для ссылки должна быть «/subdir/index.php» (которая не соответствует производственной среде). –

+0

Так что используйте переменную, определенную как siteRoot = "/ subdir /"; а затем любую ссылку или ссылку, которую вы используете. – Chris

Смежные вопросы