Как удалить.html из URL?



Как удалить .html из URL-адреса статической страницы?



кроме того, мне нужно перенаправить любой url.html к тому, кто без него. (т. е. www.example.com/page.html к www.example.com/page).

471   8  

8 ответов:

С .htaccess под apache вы можете сделать перенаправление следующим образом:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ / [L,R=301] 

Что касается удаления .html из url, просто ссылка на страницу без .HTML-код

<a href="http://www.example.com/page">page</a>

Я думаю, что некоторое объяснение ответа Джона было бы конструктивным. Следующее:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

проверяет, что если указанный файл или каталог соответственно не существует, то правило перезаписи продолжается:

RewriteRule ^(.*)\.html$ / [L,R=301]

но что это значит? Он использует регулярное выражение (регулярные выражения). Вот немного того, что я сделал раньше... enter image description here

Я думаю это правильно.

Примечание: при тестировании ваш .htaccessне использовать 301 редирект. Использовать 302 до завершения тестирования, так как браузер будет кэшировать 301s. Вижу https://stackoverflow.com/a/9204355/3217306

обновление: я немного ошибся,. соответствует всем символам, кроме новых строк, поэтому включает пробелы. Кроме того,вот полезный чит для regex лист

источники:

http://community.sitepoint.com/t/what-does-this-mean-rewritecond-request-filename-f-d/2034/2

https://mediatemple.net/community/products/dv/204643270/using-htaccess-rewrite-rules

Это должно работать для вас:

#example.com/page will display the contents of example.com/page.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ .html [L,QSA]

#301 from example.com/page.html to example.com/page
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
RewriteRule ^(.*)\.html$ / [R=301,L]

удалить .расширение html из ваших URL-адресов вы можете использовать следующий код в root / htaccess:

RewriteEngine on


RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC]
RewriteRule ^ /%1 [NC,L,R]

RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [NC,L]

Примечание: Если вы хотите удалить любое другое расширение, например, чтобы удалить .PHP расширение, просто замените html везде php в коде выше.

вам нужно, чтобы убедиться, что у вас есть Options -MultiViews Как хорошо.

ни один из вышеперечисленных не работал для меня на стандартном хосте cPanel.

это работает:

Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ .html [NC,L]

Спасибо за ваши ответы. Я уже решил свою проблему. Предположим, у меня есть мои страницы под http://www.yoursite.com/html, следующее .htaccess правила применяются.

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /html/(.*).html\ HTTP/
   RewriteRule .* http://localhost/html/%1 [R=301,L]

   RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /html/(.*)\ HTTP/
   RewriteRule .* %1.html [L]
</IfModule>

Я использую это .htacess для устранения .HTML extantion с моего сайта url, пожалуйста, убедитесь, что это правильный код:

    RewriteEngine on
RewriteBase /
RewriteCond %{http://www.proofers.co.uk/new} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) /.html [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.html$ http://www.proofers.co.uk/new/ [R=301,L]
RewriteRule /(.+)(\.html)$ / [R=301,L] 

попробуйте :) не знаю, если это работает.

Comments

    Ничего не найдено.