.html
정적 페이지의 URL에서 제거하는 방법은 무엇입니까?
또한 URL이없는 URL로 리디렉션해야 .html
합니다. (예 www.example.com/page.html
에 www.example.com/page
).
.html
정적 페이지의 URL에서 제거하는 방법은 무엇입니까?
또한 URL이없는 URL로 리디렉션해야 .html
합니다. (예 www.example.com/page.html
에 www.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 확장자를 제거하기 위해 다른 확장자를 제거하려면 위 코드에서 html 을 php 로 바꾸십시오 .
아파치에서 .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>
!-f
이것은 당신을 위해 작동합니다.
#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]
RewriteBase /
비트였습니다. 불행히도 나는 그것이 왜 효과가 있었는지 이해하지 못하지만 곧 배울 것 같습니다.
Firebase 호스팅을 사용하는 사람들에게는이 페이지에서 어떤 답변도 작동하지 않습니다. .htaccess
Firebase 호스팅에서 사용할 수 없기 때문 입니다. firebase.json 파일을 구성해야합니다. "cleanUrls": true
파일에 줄 을 추가 하고 저장하십시오. 그게 다야.
줄을 추가하면 firebase.json은 다음과 같습니다.
{
"hosting": {
"public": "public",
"cleanUrls": true,
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
]
}
}
URL에서 .html 확장자를 제거하려면 root / htaccess에서 다음 코드를 사용할 수 있습니다.
#mode_rerwrite start here
RewriteEngine On
# does not apply to existing directores, meaning that if the folder exists on server then don't change anything and don't run the rule.
RewriteCond %{REQUEST_FILENAME} !-d
#Check for file in directory with .html extension
RewriteCond %{REQUEST_FILENAME}\.html !-f
#Here we actually show the page that has .html extension
RewriteRule ^(.*)$ $1.html [NC,L]
감사