it-gundan.com

.htaccess 파일에서 URL 재 작성을 어떻게 구현합니까?

사용자 대신 주소를 볼 수 있도록 URL을 다시 작성하고 싶습니다 (왜? 이 질문 . 참조).

labouseur.com/course-compilers.html 

그들은 대신보고 간단하게 사용할 수 있습니다

labouseur.com/course-compilers

(아마도 코스/컴파일러가되도록 재구성해야합니다.)

내 웹 사이트에 Linux 기반 공유 호스팅 서비스를 사용하고 있으므로 서버를 관리 제어 할 수 없지만 .htaccess를 제어 할 수 있습니다. 온라인에서 읽은 참고 문헌은 나에게 분명하지 않은 것 같으므로 여기에서 약간의 명확성과 조언을 찾고 있습니다.

17
Alan

실제로 서버의 파일에서 .html을 제거하고 htaccess에서 설정을 설정하여 html 파일로 제공되도록 할 수는 있지만 원하는 것은 아닙니다.

이 작업을 수행 :

RewriteEngine on
# Check this condition to ensure that it's not a directory.
RewriteCond %{REQUEST_FILENAME} !-d
# Check this condition to ensure that there's a file there
RewriteCond %{REQUEST_FILENAME}\.html -f
# Replace html with your file extension, eg: php, htm, asp
RewriteRule ^(.*)$ $1.html
13
Rizwan Kassim

먼저 Apache에 모듈이 있고 .htacces 파일에서 허용되는지 확인한 후 다음을 추가하십시오.

RewriteEngine on

# Rewrite rules
RewriteRule ^/myoldsubfolder/(.*) /newfolder/$1 

당신의 예는

RewriteCond %{REQUEST_URI} !-d
RewriteCond %{REQUEST_URI}\.html -f
RewriteRule ^/(([a-zA-Z0-9_]+)/?)$ /$1.html

단일 레벨 디렉토리 구조 및

RewriteRule ^/(([a-zA-Z0-9_]+)/?)+$ /$1.html

다단계 구조의 경우.

그러나 주의

구조가 있다면

/site/.htaccess
/site/subfolder/.htaccess
/site/subfolder/cats/.htaccess

자식 .htaccess 파일의 다시 쓰기 규칙은 상위 폴더를 기준으로하며 messy 다시 쓰기 루프 상황에 빠질 수 있습니다. 가능한 경우 RewriteCond을 (를) 사용하여 중지하십시오!

3
Aiden Bell

위의 답변 외에도 사용할 수 있습니다

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^([\w-]+)$ $1.html [L]

([\w-]+) 하이픈 (-)으로 문자, 숫자를 사용할 수 있습니다.

(.*)은 (는) 액세스 할 때 내부 서버 오류를 발생시키는 다른 다음 규칙을 위반할 수있는 모든 요청에 ​​관계없이 모든 요청을 다시 작성합니다.

2
Abhishek Gurjar

이를 위해 .htaccess 파일을 사용할 필요는 없습니다. 파일을 디렉토리로 구성하고 "labouseur.com/course-compilers.html"을 사용하는 대신 index.html 파일의 이름을 지정하고 "course-compilers"라는 디렉토리에 넣으십시오. 그런 다음 해당 디렉토리를 가리키면 기본적으로 색인이 제공되지만 URL에는 표시되지 않습니다. 따라서 "labourseur.com/course-compilers"로 링크를 작성하면됩니다.

.htaccess가 필요하지 않습니다.

1
Joel Glovier