#redirect #mod-rewrite #url-rewriting #hugo
#перенаправление #мод-перезапись #перезапись URL-адреса #hugo
Вопрос:
У меня есть URL, где находятся статические сайты сборки Hugo:
www.myurl.com/blog
Например, index.md/index.html доступ из Hugo осуществляется как
www.myurl.com/blog/index.html
Теперь мне нужен htaccess, чтобы переписать URL, чтобы быть:
www.myurl.com/index.html
Как мне это сделать?
Тем временем я пытался
RewriteCond %{REQUEST_URI} !^/blog/
RewriteRule ^(.*)$ /blog/$1 [L,QSA]
Это работает, но не совсем так, как я хочу. Потому что, если у меня есть что-то связанное в блоге, которое находится в www.myurl.com/somwhere/really/deep/detail.html это не сработает, потому что перенаправляет на /blog /. Есть что-нибудь, чтобы решить эту проблему?
Ответ №1:
Ваш RewriteRule перенаправит все URL-адреса none / blog / на blog. Но вы можете отфильтровать все каталоги, которые хотите исключить из этого правила:
RewriteCond %{REQUEST_URI} !^/blog/
RewriteCond %{REQUEST_URI} !^/somewhere
RewriteCond %{REQUEST_URI} !^/somewhere2
RewriteRule ^(.*)$ /blog/$1 [L,QSA]
Комментарии:
1. Я слепой или это тоже перенаправит материал куда-нибудь somewhere2? Я не смогу протестировать его до следующей недели, поскольку в настоящее время я в пути без доступа к своему серверу.
2. Похоже, это не работает. Все, не относящиеся к /blog /, перенаправляются в /blog /, за исключением того, что я также добавил
RewriteCond %{REQUEST_URI} !^/gudshite
, и все же, когда я захожу в / gudshite /, я все еще попадаю на / blog / .
Ответ №2:
Вы также могли бы использовать aliases
в своем личном деле.
Например, в вашем blog/index.md
:
TOML
aliases = [
"/index.html",
]
YAML
---
aliases:
- "/index.html"
---