Назад | Перейти на главную страницу

Htaccess: переписать подкаталог в домене в основной домен

Мне нужно переписать подкаталог, чтобы перейти в основной домен. Например, у меня есть www.mysite.com, и я хочу переписать www.mysite.com/newersite на www.mysite.com.

Вот что я использовал в своем файле htaccess:

RewriteCond %{HTTP_HOST} ^mysite\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.mysite\.com$
RewriteCond %{REQUEST_URI} !^/newsitecontainer/newsite/
RewriteRule (.*) /newsitecontainer/newsite/$1

Этот код перезаписи работает нормально, но меня беспокоят 2 проблемы:

1) В моем контейнере новостей есть две зависимые папки для правильной работы нового сайта: каталог «сайт новостей» и каталог «данные». Каталог данных должен находиться за пределами папки «сайта новостей» (в корне). Текущий (действующий веб-сайт): www.mysite.com. Я хочу переписать эти два подкаталога, чтобы они действовали / отображались как текущий домен, www.mysite.com (за исключением каталога «data», который должен находиться только в правильном месте, чтобы его можно было вызвать из каталога «newsite») .

Это простая диаграмма моей текущей структуры каталогов:

http://i56.tinypic.com/s5y1ja.png

Думаю, я хочу, чтобы URL-адрес «новостного сайта» был равен текущему домену (www.mysite.com), «URL-адрес новостного сайта» = www.mysite.com. Я хочу, чтобы каталог «data» был переписан так, чтобы он отображался за пределами каталога «newsite», но все еще в корневом каталоге (newsitecontainer).

Я только что освоил этот htaccess, так что это может показаться запутанным. Я знаю, что я ...

2) Вторая проблема заключается в том, что после того, как каталоги "newsite" и "data" были успешно переписаны, я хочу переписать страницы содержимого подкаталогов "newsite", чтобы показать, что они являются непосредственно частью новой перезаписи на текущий домен (www.mysite.com). Я хочу сделать это, потому что есть много плагинов для платформы, которую я использую (Elgg), а URL-адреса могут быть очень длинными и некрасивыми (не помогает целям SEO).

Так, например (после успешного переписывания проблемы №1), я хотел бы переписать что-то вроде этого: "www.mysite.com/modfolder/submodfolder/visible-page/" на это "www.mysite.com/visible-page/ "Это перезапишет любую ссылку на каталог модов и его подкаталоги (и фактическую страницу), чтобы показать чистый URL-адрес как только текущий домен и фактическую видимую страницу каталога модов.

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

Я был бы очень признателен за помощь в этом. Это почти единственное, что мне осталось сделать, чтобы представить это моему клиенту. Конечно, я могу просто дать ему URL-адрес для записи, чтобы просмотреть сайт, но все дело в презентации, и мне нужно заполнить это, чтобы сделать его полноценным и начать продвигать сайт. Пожалуйста, помогите.

Заранее миллион!

Вот мое решение:

В зависимости от типа файла установите переменную среды. Например:

RewriteRule (.*)(\.(pdf|jpg|jpeg|gif|png|ico)){1}$ $1$2 [QSA,E=PATH_LOCAL:../staticfiles]

затем позже проверьте, является ли это файлом, объединив корневую папку и переменную среды:

RewriteCond %{DOCUMENT_ROOT}/%{ENV:PATH_LOCAL}/%{REQUEST_FILENAME}  -f
# The file exists => re-write it to the FULL filename:
RewriteRule  ^(.+) %{DOCUMENT_ROOT}/%{ENV:PATH_LOCAL}/%{REQUEST_FILENAME} [QSA,L]

Теперь с этими указаниями вы можете найти способ достичь своей цели;)