
Apache 웹 서버에 PHP 웹 애플리케이션이 있습니다.
서버의 웹 애플리케이션 경로는 다음과 같습니다./var/www/html/intern/organisation/example_app
웹 애플리케이션의 URL은 다음과 같습니다.
https://www.example.de/org1/intern/example_app/
나는 모든 요청이 다음 https://www.example.de/org1/intern/example_app/view1/
으로 리디렉션되기를 원합니다.
https://www.example.de/org1/intern/example_app/index.php
내 로컬 XAMPP 서버에서는 해당 목적으로 작동하는 다음 .htaccess 파일을 사용합니다.
RewriteEngine On
RewriteBase /example_app
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [L]
하지만 그 파일이 서버에서 어떻게 보일지 전혀 모르겠습니다. 또한 서버에서 httpd.conf를 사용합니다. 해당 파일이 .htaccess
파일을 방해하는 경우 아래에 있는지 궁금합니다 ./var/www/html/intern/organisation/example_app/
서버에서 재작성을 구성하는 방법을 아는 사람이 있습니까?
답변1
.htaccess
하위 디렉터리 의 파일은 다음 /org1/intern/example_app/
과 같아야 합니다.
DirectoryIndex index.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
그런 다음 하위 디렉터리에 있는 경우 동일한 .htaccess
파일을 로컬 및 라이브 서버에서 사용할 수 있습니다 example_app/
.
파일이 다시 쓰려는 파일 .htaccess
과 동일한 디렉토리에 있으면 지시문 이 필요하지 않습니다 .index.php
RewriteBase
지시어 는 이미 서버 구성에 DirectoryIndex
설정되어 있을 가능성이 높 으므로 여기서는 필요하지 않을 수도 있지만 완전성을 위해 포함해야 합니다. 애플리케이션 디렉터리 자체를 요청하는 경우(예: ) index.php
에 필요합니다 .https://www.example.de/org1/intern/example_app/
이는 "내부 리디렉션" 또는 더 일반적으로 "다시 쓰기"라고 합니다. 단순히 "리디렉션"이라고 말하면 이는 완전히 다른 "외부(HTTP) 리디렉션"을 의미합니다.
.htaccess file
해당 파일이 아래에 있는 를 방해하는지 궁금합니다 ./var/www/html/intern/organisation/example_app/
여러 .htaccess
파일(및 서버 구성)이 충돌할 수 있습니다. 그러나 하위 구성의 mod_rewrite 지시어(동일한문맥, 즉.예배 규칙서)는 기본적으로 상위 구성의 mod_rewrite 지시어를 완전히 무시합니다.
곁에:(또는 아닐 수도 있음)
서버의 웹 애플리케이션 경로는 다음과 같습니다.
/var/www/html/intern/organisation/example_app
웹 애플리케이션의 URL은 다음과 같습니다.
https://www.example.de/org1/intern/example_app/
약간 혼란스럽기는 하지만 파일 경로와 URL 경로가 일치하지 않는 것 같나요? Alias
서버 구성에서 추가로 다시 작성하거나 구성했습니까 ? 아니면 파일 경로에 URL 경로 example_app
와 다른 디렉터리가 있습니까?example_app
답변2
자세한 답변에 감사드립니다. 다시 쓰기 규칙은 문제가 아니었습니다.
문제는 간단했습니다. httpd.conf에서 AllowOveride를 활성화해야 했기 때문에 전체 .htaccess가 표시되지 않았습니다.