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