저는 웹사이트 루트에서 URL 재작성을 시도하는 프로젝트를 진행 중입니다. 현재.htaccess
는 다음과 같습니다
내 웹사이트가 재작성이 활성화되었습니다. htaccess tester를 통해 코드를 확인했는데 올바른 값이 표시됩니다.
근데 제가 방문하면 screenshot-of-the-week/screenshot/123
为例时,我得到了 404 页面。当我访问 screenshot-of-the-week/screenshot/
잘 작동됩니다.
또한 수동으로 "실제" URL로 이동하면 예상대로 작동합니다. screenshot-of-the-week/screenshot/index.php?id=123
문제가 무엇인지 알 수 없어 다른 폴더로 .htaccess
이동하고 경로를 편집해 보았지만 성공하지 못했습니다.
다른 문제 해결 팁을 제공할 수 있는 사람이 있나요? 리디렉션이 실제로 뒤에서 무엇을 하고 있는지 어떻게 확인할 수 있나요?
이 규칙의 "문제"는 다시 작성된 URL과도 일치한다는 것입니다(특히
[^/]+
与index.php
匹配),因此会再次重写时间到/screenshot-of-the-week/screenshot/index.php?id=index.php
(id=123
매개변수가 재정의됨). 그렇다면 스크립트가 404 응답(Apache 아님)을 생성할 것으로 예상됩니까?이 문제를 해결하려면 정규식을 더 구체적으로 만들고
END
플래그(Apache 2.4)를 사용하여 재작성 엔진이 추가 루프(및 두 번째 재작성)를 수행하는 것을 방지해야 합니다.귀하의 예에서는 숫자 값을 전달합니다. 따라서 숫자 값만 예상하면 숫자만 일치합니다.
예:
으아악또한 동일한 응답을 생성하는 정규식에 후행
$
,否则您的网站可能会被滥用,因为任何内容都可以附加到 URL,并且相同的资源将被服务。 (在您的原始规则中附加/
을 추가했습니다. )(귀하의
.htaccess
파일이 문서 루트에 있다고 가정합니다.)MWL 테스터는 파일을 한 번만 통과합니다. 이는 실제 Apache 서버가 작동하는 방식이 아닙니다. 따라서 MWL 테스터는 재작성/재지정 루프를 감지할 수 없습니다.
screenshot-of-the-week/screenshot/
时,规则不会被处理(正则表达式不匹配)。 mod_dir 提供DirectoryIndex
文档 (index.php
),但没有id
매개변수에 접근할 때.