Как сохранить отображение URL без изменений после перенаправления корневой папки в подпапку

Я хочу перенаправить все запросы с mydomain.com на mydomain.com/live/. Я уже могу это сделать, однако у меня проблемы с URL-адресом, отображаемым в браузере. У меня есть две цели: (1) чтобы URL-адрес всегда отображался с «www» впереди и (2) чтобы подпапка «live» не отображалась в URL-адресе.

РЕДАКТИРОВАТЬ: На основе отредактированного кода Cryo следующее выполняет мои цели, а также добавляет конечную косую черту после всех подпапок, чтобы при вводе папки в URL-адресе она правильно перенаправлялась в index.html внутри нее:

RewriteCond %{HTTP_HOST} !^www\.domain\.com$
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
RewriteRule ^$ /index.html

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..+$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domain.com/$1/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/live/
RewriteRule ^(.*)$ /live/$1

Однако вопрос: при добавлении косой черты в конце подпапок я предполагал, что RewriteCond %{REQUEST_FILENAME} !-f сделает так, чтобы косая черта не добавлялась после имен файлов (только папок), поэтому /subfolder/page.html не будет иметь косая черта (это то, что я хочу). Однако RewriteCond %{REQUEST_FILENAME} !-f, похоже, ничего не делает, и требуется RewriteCond %{REQUEST_URI} !..+$.


person Choy    schedule 17.01.2010    source источник


Ответы (2)


RewriteCond %{HTTP_HOST} !^www\.georgemitra\.com$
RewriteRule ^(.*)$ http://www.georgemitra.com/$1 [R=301,L]

RewriteRule ^$ /index.html
RewriteRule ^blog$ /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/live/
RewriteRule ^(.*)$ /live/$1

У тебя почти получилось. Я переместил поддомен www на первое место и отправил его в браузер, прежде чем продолжить. Затем, когда запрос возвращается, я просто добавил силу index.html в корень и перехват для /blog без завершающей косой черты. Надеюсь, это поможет.

person nortron    schedule 17.01.2010
comment
Спасибо! Почти идеально, единственное, что я хотел бы добавить завершающую косую черту к каждой подпапке, а не только к блогу. Я отредактировал свой пост выше с вашими изменениями, а также еще одним моим изменением, чтобы получить эту функциональность. Теперь это работает, однако я использую условия RewriteCond %{REQUEST_FILENAME} !-f и RewriteCond %{REQUEST_URI} !(.*)/$, чтобы предотвратить добавление завершающей косой черты к URL-адресам, которые указывают непосредственно на имя файла, например /subfolder /страница.html. Я в замешательстве, потому что думаю, что для этого мне понадобится только первое правило, но само по себе первое правило ничего не делает. - person Choy; 17.01.2010

Если вы хотите избежать включения «живого» в URL-адрес, похоже, что вам нужен не перенаправление, а обратный прокси-сервер.

person Jherico    schedule 17.01.2010