Перезапись URL-адреса HUGO с помощью .htaccess

#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"
---