Чтобы перезаписать (внутреннее перенаправление) /myuserid/
в /myuserid/blogs/my_blog/
, когда это правило в .htaccess находится в папке /myuserid/
, используйте это правило:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^$ blogs/my_blog/ [L]
Если вы добавите это правило чуть ниже указанного выше, вам также следует переписать статьи и т. Д.:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?!blogs/my_blog/)(.+)$ blogs/my_blog/$1 [L]
Приведенное выше правило будет переписывать только несуществующие URL-адреса (я думаю, что это правильный подход - если вы думаете иначе, просто удалите 2 строки RewriteCond). Это означает, что если запрашивается /myuserid/hello.png
и файл существует, он НЕ будет перезаписан на /myuserid/blogs/my_blog/hello.png
.
Теоретически вы можете объединить эти 2 правила в одно (заменив (.+)
на (.*)
), но по какой-то странной причине он не работает (или работает неправильно) на некоторых серверах. В любом случае - вот оно:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?!blogs/my_blog/)(.*)$ blogs/my_blog/$1 [L]
Кроме того, как я могу заставить его быть постоянным по статьям и т. Д. На протяжении всего
сайте?
Это очень конкретный вопрос, и, не зная много деталей о том, как он генерирует ссылки и т. Д., Я не могу дать вам однозначный ответ на этот вопрос.
Возможно, что использование какого-либо ReverseProxy сделает эту работу - вместо того, чтобы просто переписать, используйте внутренний прокси - это будет полностью прозрачно для пользователей (так же, как переписать), но должно быть в состоянии исправить ссылки на страница от реальных до хороших. К сожалению, мои знания по этому конкретному предмету очень ограничены, чтобы дать вам реальный пример.