Назад | Перейти на главную страницу

Nginx - перенаправить все URL-адреса на root (не отображать HTML-страницу в URL-адресе?)

Мне нужно превратить мой предыдущий сайт с Wordpress в одностраничный сайт. Мой сайт может содержать только целевую страницу, и я хочу, чтобы все старые URL-адреса были перенаправлены на 301 в корень моего сайта.

У меня это работает, но не совсем так, как я бы предпочел. В настоящее время все перенаправляется на mysite.com/index.html, но я хочу, чтобы они направлялись непосредственно на mysite.com.

Вот код перенаправления, который я использую в своих тегах location / {}:

try_files $uri $uri/ /index.php?q=$uri&$args;
            if ( $uri !~ ^/(index\.php|css|images|uploads|js|robots\.txt|favicon\.ico|wp-admin|launch|wp-login\.php|inc) ) {
                    rewrite ^ http://www.mysite.com/index.html permanent;
            }

Этот фрагмент кода перенаправляет все, кроме тех конкретных каталогов и файлов, которые я перечислил. Таким образом, я все еще могу получить доступ к своему каталогу wp-admin для добавления контента в Wordpress, поэтому, когда я нажму на переключатель позже, я могу снова включить сайт и обновить весь контент и подготовить его к запуску.

Если я удалю index.html из приведенного выше перенаправления, мой сайт перейдет в цикл перенаправления. Если я сделаю правило перезаписи просто указывающим на /, тогда мой сайт также перейдет в цикл перенаправления.

Может ли кто-нибудь помочь мне обновить этот код, чтобы index.html не отображал окно браузера в качестве фактического URL-адреса? Мне бы очень хотелось, чтобы фактический URL-адрес был www.mysite.com, а не www.mysite.com/index.html.

РЕДАКТИРОВАТЬ:

Что мне действительно нужно, так это указать корневой каталог в моем операторе! ~. Но если я добавлю | / | он позволяет игнорировать все файлы и подкаталоги ... что означает, что мое правило перенаправления никогда не вызывается.

Могу ли я указать только корневой каталог и не включать какие-либо файлы или подкаталоги в этот корневой каталог? Таким образом, я могу сказать nginx не перенаправлять на / моего домена, но если он найдет /index.html, он перенаправит на /.

Я вижу два пути:

  • Добавить |$ регулярное выражение
  • создать location = / и заставьте его запускать /index.php на любом используемом PHP-сервере (возможно, установив fastcgi_param SCRIPT_FILENAME .../index.php;