저는 htaccess를 처음 접했지만 지난 며칠 동안 많은 것을 배웠습니다. 하지만 웹사이트가 원하는 대로 작동하지 않는 특정 부분에서 막혔습니다. 다음은 델리마가 있는 코드 부분입니다.
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME}.php -f
Rewriterule ^ %{REQUEST_FILENAME}.php [NC]
# RewriteCond /templates/%{REQUEST_FILENAME}.html -f
RewriteRule ^([^/\.]+)$ index.php?$1 [NC,S=1]
RewriteRule ^([a-zA-Z0-9]+)$ product.php?product_id=$1 [NC]
첫 번째 RewriteCond 및 RewriteRule은 완벽하게 작동합니다. 나중에 무슨 일이 일어날 지에 대한 내 문제입니다.
내가 달성해야 할 것은 사용자가 입력할 때/어떤 단어동일한 이름을 가진 파일이 유효한지 검색합니다./템플릿폴더이므로 다음과 같은 역할을 합니다.index.php?어떤 단어그렇지 않으면 다음과 같이 제공됩니다.product.php?product_id=어떤 단어. 는index.php두 번째 조건을 주석 처리하면 규칙이 제대로 작동하지만 추가하면product.php규칙이 작동합니다.
제공된 "태그"는 숫자, 문자, 하이픈으로 연결된 단어(예: 임의의 단어) 또는 숫자와 문자의 조합일 수 있습니다. 규칙은 대소문자를 구분해야 합니다.
이 문제에 대한 도움을 주시면 감사하겠습니다.
답변1
문제는%{REQUEST_FILENAME}
것이다.순수한URL에서 번역된 경로, 즉http://example.com/foobar/var/www/vhost/example.com/httpdocs/foobar
웹 서버 설정 방법에 따라 다음과 같을 수 있습니다 . 다음과 같이 URL에 패턴 일치를 사용하는 것이 좋습니다.
RewriteCond %{DOCUMENT_ROOT}/templates/$1.html -f
RewriteRule ^([^\/\.]+)$ index.php?$1 [NC,S=1]
(테스트는 안해봤지만)