>

해결책이없는 문제가있는 것 같습니다.

디렉토리와 이름이 같은 파일이 있는데 디렉토리를 루트 폴더의 파일로 리디렉션하는 방법을 찾지 못하는 것 같습니다. 내가 찾은 모든 정보는 하위 디렉토리의 파일을 다시 쓰거나 파일로 리디렉션하는 것입니다.

dir: example.com/en-gb/

file: example.com/en-gb (extension removed with htaccess)

현재 htaccess (관련 부분) :

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
RewriteRule ^$ /en-gb [L]
RewriteCond %{REQUEST_URI} ^/en-gb/$
RewriteRule . ../en-gb [R,L]

이로 인해 다음과 같은 오류가 발생합니다 :

You don't have permission to access /en-gb/.html on this server.

어떤 아이디어? 이것도 가능합니까?

  • 답변 # 1

    일반적으로 /directory 를 요청할 때 mod_dir은 후행 슬래시를 추가하기 위해 301 리디렉션을 발행합니다. 와이즈 비즈  (URL을 "수정"하기 위해). 그러면 mod_dir은 해당 디렉토리 내에서 디렉토리 색인 문서를 제공 할 수 있습니다.

    안타깝게도, 이것은 mod_rewrite가 요청을 처리 할 수 ​​있기 전에 발생하는 것으로 보입니다. 따라서 /directory/ 에서이 동작을 비활성화해야합니다. :

    .htaccess
    
    

    그런 다음 대신 요청을 파일에 내부적으로 다시 쓸 수 있습니다. 예. 와이즈 비즈  내부적으로 DirectorySlash Off 로 다시 작성  존재하는 경우 :

    /directory
    
    

    그러나 pyzwyz를 사용하지 않도록 설정  주의해야 할 점-디렉토리 요청에 이미 슬래시가 있는지 확인해야합니다 (또는 /directory.html 에서 확인하십시오)  게다가). 문서의 보안 경고에 유의하십시오.

    참조 :
    https://httpd.apache.org/docs/current/mod/mod_dir.html#directoryslash

    RewriteCond %{DOCUMENT_ROOT}/$1.html -f RewriteRule ^([^.]+)$ $1.html [L]

관련 자료

  • 이전 java - 병렬 스트림 성능 향상에 대한 기사를 이해하는 데 도움이 필요합니다
  • 다음 windows - 이 Powershell 명령으로 인해 항상 다른 파일 인코딩이 발생하는 이유는 무엇입니까?