[html] URL에서 .html을 제거하는 방법?

.html정적 페이지의 URL에서 제거하는 방법은 무엇입니까?

또한 URL이없는 URL로 리디렉션해야 .html합니다. (예 www.example.com/page.htmlwww.example.com/page).



답변

Jon의 대답에 대한 설명 이 건설적 이라고 생각 합니다. 다음과 같은:

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

지정된 파일 또는 디렉터리가 각각 존재하지 않는 경우 다시 쓰기 규칙이 진행되는지 확인합니다.

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

그러나 그것은 무엇을 의미합니까? 그것은 사용하는 정규 표현식 (정규 표현식) . 여기 제가 아까 만든 것입니다 …
여기에 이미지 설명 입력

나는 그것이 맞다고 생각 한다.

참고 : 테스트 할 때 301 리디렉션을 사용 .htaccess 하지 마십시오 . 브라우저가 301을 캐시하므로 테스트가 끝날 때까지 302를 사용하십시오. 참조 https://stackoverflow.com/a/9204355/3217306를

업데이트 : 약간 착각 .하여 개행 문자를 제외한 모든 문자와 일치하므로 공백이 포함됩니다. 또한 여기에 유용한 정규식 치트 시트가 있습니다.

출처 :

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

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


답변

URL에서 .html 확장자를 제거하려면 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 확장자를 제거하기 위해 다른 확장자를 제거하려면 위 코드에서 htmlphp 로 바꾸십시오 .


답변

아파치에서 .htaccess를 사용하면 다음과 같이 리디렉션을 수행 할 수 있습니다.

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

URL에서 .html을 제거하려면 .html이없는 페이지로 연결하기 만하면됩니다.

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


답변

이것은 당신을 위해 작동합니다.

#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 ^(.+)$ $1.html [L,QSA]

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


답변

당신도 가지고 있는지 확인해야합니다 Options -MultiViews.

위의 어느 것도 표준 cPanel 호스트에서 나를 위해 일하지 않았습니다.

이것은 작동했습니다.

Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.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>


답변

내 URL 사이트에서 .html 확장을 제거하기 위해이 .htacess를 사용합니다. 올바른 코드인지 확인하십시오.

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