Я хочу перенаправить все запросы на 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}! .. + $.