Прибрати .html у всіх файлах статичного сайту
Як прибрати розширення .html в адресному рядку браузера Сайт розташований на хостингу та повністю статичний, є також папки з вкладеними html-сторінками:
2 відповіді 2
Варіант 1
Якщо у вас на хостингу як веб-сервер використовується Apache, то в .htaccess достатньо буде прописати:
RewriteEngine on RewriteBase / RewriteCond % ^[A-Z]\ /([^.]+)\.html\ HTTP RewriteRule ^([^.]+)\.html$ site.ru/$1 [R=301,L] RewriteCond % !(\.[^./]+)$ RewriteCond % !-d RewriteCond %!-f RewriteRule (.*) /$1.html
site.ru замініть на домен вашого сайту. Після цього відкриття site.ru/contacts.html перенаправить на site.ru/contacts.
Варіант 2
Для кожного файлу створити папку з відповідним файлом назвою, потім перемістити до цієї папки однойменний файл і перейменувати його в index.html .
@easy в корені сайту має бути файл .htaccess. Або ж саппорт хостингу запитуйте.
все налаштував, роблячи ваш код, у мене виходила помилка і сторінки не відкривалися, виводила такий шлях, без .htaccess зазвичай так мойсайт.ру/новости.хтмл, коли додав ваш .htaccess і в ньому замінив сайт.ру і було "мойсайт.ру/мойсайт.ру/новости", я не зовсім зрозумів як це працює, але ось, коли я видалив з коду .htaccess свій сайт, всі сторінки відкривалися і .html забирався, я не зовсім зрозумів як працює це але ось. .htaccess додав до public_html свого .ht не було на хостингу, створював новий.
Як приховати елемент?
1. За допомогою display: none; . Елемент повністю зникає з веб-сторінки, не залишаючи сліду.
2. Задавши елемент visibility: hidden; . Даний спосіб видаляє елемент з виду, при цьому не торкаючись потік html-документа, залишаючи порожній простір у тому місці, де цей елемент повинен був перебувати.
3. За допомогою властивості opacity. Значення opacity: 0; робить весь елемент повністю прозорим, включаючи його вміст, а не тільки фон елемента.Цей спосіб діє аналогічно з visibility: hidden , відмінність у тому, що властивість opacity введено специфікацію CSS3.
Для абсолютно позиціонованих елементів visibility: hidden і display: none поводяться однаково.
Щоб показати невидимий елемент, можна використовувати псевдоклас :hover , наприклад:
.submenu < display: none; >.submenu:hover
CSS-властивість, що відповідає тільки за видимість елементів - це властивість visibility. Воно приймає такі значення:
visibility: visible; - елемент видимий за умовчанням;
visibility: hidden; - Елемент стає невидимим, перебуваючи при цьому на своєму місці. У той же час елементи-нащадки невидимого елемента можна зробити видимими, наприклад:
visibility: collapse; - Ця властивість застосовується для табличних елементів, роблячи осередки таблиці невидимими. Якщо ця властивість використовується для інших елементів, вона працює аналогічно з visibility: hidden; ;
visibility: inherit; — успадковує цю властивість від батьківського елемента.
Removing the index.html від url
Ok, Maybe pretty dumb question but I can't find an answer on Google. I am coding my site by hand. How do I make the index.html disappear from the url's? Do I use a piece of code in my html? Do I have to change my href's in my files? Hope you guys can help! EDIT: I've tried this with .htaccess file RewriteEngine On RewriteRule ^index\.html$ / [R=301,L] RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L ] It does work, але всі мої links aren't working anymore. Я відповів, що я маю, щоб скористатися всіма index.html з href's in my documents. Але що буде бути багато роботи. Чи є він інший код для .htaccess що just hides index.html?
це називається mod rewrite і є тонами stackoverflow питання про це -> stackoverflow.com/search?q=mod+rewrite+index.html
@davidkonrad good resource, але якщо він не знає, що він називається mod rewrite, вони повинні не знати, що ці :-)
8 Answers 8
A SIMPLE WAY TO DO THIS in Html:
(example in my case is a simple dual language site)
If your link looks like this:
You should change it to this:
Якщо ви збираєтеся скористатися електронною поштою в нашому директорі, як я маю приклад:
You should change it to this:
Зауважте, що "/" goes back to your root directory and automatically selects index.html, so that is why I used "en" for English language site, because the name of the folder in this case is "en". Ви повинні також робити, що ви маєте index.html у вашій англійській мові folder, і не index-en.html.
Цей показ worked great for me. Thanks. Для того, щоб помітити коментар на місцевому комп'ютері, я не думаю, що це робота, коли ви тестуєте місцево. Коли я був випробуваний в місцевості, "/" відображався у списку файлів і складників, розміщених в проекті. Але once I published the website, "/" worked just as intended.
Apache має .htaccess файли і mod_rewrite, у вашому .htaccess файлі, set:
DirectoryIndex index.html
Ви можете також налаштувати цей параметр в Apache site config files too
Ви можете скористатися списком файлів імен, тому якщо це не потрібно, щоб перші його переміщувати до Next.
would be great if you wrote the extra 2 sets of lines as complete example.
Вони не мають жодних lines для .htaccess file. Там є інші lines для config files, which is why I надіслали links to them
I wrote this 10 years ago, але it appears the instructions for latest version of Apache are the same httpd.apache.org/docs/current/mod/mod_dir.html
mod_rewrite module є відповідальним для всіх перезаписівEngine. Check on your server whether is module is present and enable.
Вам потрібно створити файл, названий '.htaccess' в центрі керування вашого сайту, розміщуючи наступний код:
RewriteEngine On RewriteCond % !-f RewriteRule ^([^\.]+)$ $1.html [NC,L]
І вони матимуть на увазі всі сторінки на вашому сайті, щоб не позначити '.html' на кінці, e.g.:
should be replaced with:
якщо ви не знайдете.
And save it в root directory, so the same folder that you have your index.html file.
Це не повинно бути /index.html, якщо ви не вказуєте, щоб в браузері вибрати bar на місцевому сервері для тестування.
Я думаю, що це configured в IIS, коли ви розробляєте сайт, я не маю на увазі, але я маю на увазі, щоб запустити пункт, що ваш URL буде використовувати, коли ви найдете UL, що спричиняє Index.html page.
Sorry I'm not too Helpful here, hopefully it will point you in the right direction.
За допомогою цих слів така як Apache або IIS має цей набір більше, і це дає змогу Index.html , Index.php першою, коли ви шукаєте свою URL в.
Great SEO idea! Це є подібним до nginx redirect loop, remove index.php з url and Apache .htaccess to hide both .php and .html extensions, as well as mod_rewrite не працює htaccess — the idea here, for both Apache's mod_rewrite and n the differences between the external and internal URL-адреси — в ордері для реdirect from /index.html to / work, yet not cause redirect loops коли в даний час serving index.html , ви gotta make sure you only issue the redirect for external index.html requests, but never for internal ones; this can only be пристосований by looking в actual request_uri .
Тут є код для nginx ngx_mod_rewrite:
index index.html index.txt; if ($request_uri ~ "^(.*/)index\.(html|txt)$")
On Apache's mod_rewrite, it'll be something як following:
RewriteEngine on RewriteCond % ^.*/index\.html$ RewriteRule ^(.*/)index.html$ $1 [R,L]