example.com/about에서 example.com/about.html을 표시하는 방법은 무엇입니까? (아파치2)

example.com/about에서 example.com/about.html을 표시하는 방법은 무엇입니까? (아파치2)

example.com/about에 example.com/about.html을 표시하려고 할 때 URL을 /about.html로 변경하지 않고 가장 좋은 옵션은 무엇입니까? 지금은 다음 코드를 시도하고 있는데 404 오류만 반환합니다.

RewriteRule ^/about$ https://example.com/about.html [R=301,L]

편집 #1w3dk현재 멀티뷰를 활성화했지만 여전히 404 오류가 발생합니다. VirtualHost의 현재 설정은 다음과 같습니다.

<Directory /var/www/public_html>
    Options All +MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

답변1

mod_rewrite를 사용하는 대신내부적으로 다시 작성요청이 있는 경우 대신 MultiView(mod_negotiation)를 사용할 수 있습니다.

Options +MultiViews

mod_rewrite를 사용하면 더 복잡한 URL 재작성을 수행할 수 있지만 파일 확장자를 제거하는 것뿐이라면 MultiView로도 충분합니다. 이것이 바로 MultiView가 설계된 목적입니다.

(유효한 디렉토리에 확장자가 없는 URL/파일) 을 요청하면 /aboutMultiView가 활성화된 상태에서 mod_negotiation은 예상 MIME 유형과 일치하는 파일을 검색하여 내부 요청으로 반환합니다.

업데이트:

Options All +MultiViews

이것은 유효한 구문이 아닙니다(Apache 2.4에서 시작하는 동안 오류가 발생하므로 Apache 2.2를 사용해야 한다고 가정합니다). 에 언급된 바와 같이아파치 문서:

경고
Optionsa +또는 없는 것과 혼합하는 것은 -유효한 구문이 아니며 예기치 않은 결과가 발생할 수 있습니다.

표현하려면 AllMultiViews가지 지시문이 필요합니다.

Options All
Options +MultiViews

All이는 기본값(Apache 2.2의 경우)이므로 이것이 필요하지 않을 수도 있습니다. 그러나 단일 지시문에 필요한 옵션만 지정하는 것이 좋습니다. 예를 들면 다음과 같습니다.

Options FollowSymLinks Includes MultiViews

답변2

이렇게 해보세요: 제 생각에는 효과가 있을 것 같아요

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^about$ https://example.com/about.html [R=301,L]

리디렉션을 사용할 수도 있습니다.

Redirect 301 /about http://example.com/about.html
Redirect 301 /any_dir/about http://example.com/about.html

관련 정보