CentOS 7 및 Apache 2.4에서 실행되는 웹 애플리케이션은 최근 도메인 이름 olddomain.com
을 newdomain.com
. 애플리케이션 구조 newdomain.com
는 의 구조와 다르 olddomain.com
므로 의 모든 요청은 olddomain.com/anyurl
루트 URL로 리디렉션되어야 합니다 newdomain.com
.
.htaccess
새 파일을 만들고 httpd
다시 시작했는데 왜 olddomain.com/testbadurl
요청을 로 리디렉션할 수 없습니까 newdomain.com
? 대신 사용자에게는 404 오류만 표시됩니다 olddomain.com/testbadurl
.
명령줄에서 수행할 단계는 다음과 같습니다.
# nano /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">
AllowOverride All
</Directory>
# sudo systemctl restart httpd
# cd /var/www/html
# nano /var/www/html/.htaccess
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^olddomain\.com$ [NC]
RewriteRule ^(.*)$ http://newdomain.com [R=301,L]
# systemctl restart httpd
그런 다음 테스트 사용자는 olddomain.com/testbadlink
웹 브라우저에 입력합니다. 로그 nano /var/log/httpd/olddomain_com_requests.log
에는 404 error
.
답변:
VirtualHost
@garethTheRed는 파일 의 지침 에 대해 생각하게 했고 httpd
conf
, 결과적으로 다음 답변을 공식화하게 되었고, 효과가 있었고 이제 문제를 해결했습니다.
<VirtualHost www.olddomain.com:80>
ServerName www.olddomain.com
ServerAlias olddomain.com
ErrorLog /var/log/httpd/olddomain_com_error.log
CustomLog /var/log/httpd/olddomain_com_requests.log combined
RedirectMatch ^(.*)$ http://newdomain.com
</VirtualHost>
httpd
conf
파일에 대한 외부 액세스를 허용하는 것보다 파일이 이를 수행하도록 하는 것이 더 안전하다는 점에 유의하십시오 .htaccess
.
답변1
나는 난간 위에 머리를 대고 이 답변을 드릴 것입니다. 결국 답변은 삭제될 수 있습니다!
Apache는 덜 명확하게 정의된 순서로 모듈을 처리합니다. 처리 순서를 확인하실 수 있습니다.할 수 있게 하다이 mod_info
모듈. Fedora 22 설치 시 다음이 나타납니다(완료).
Post-Read Request:
-10 mod_http2.c
00 mod_headers.c
00 mod_remoteip.c
00 mod_proxy.c
10 mod_auth_digest.c
10 mod_http2.c
10 mod_reqtimeout.c
10 mod_setenvif.c
10 mod_unique_id.c
Header Parse:
10 mod_setenvif.c
HTTP Scheme:
30 http_core.c
Default Port:
30 http_core.c
Quick Handler:
00 mod_cache.c
00 mod_lua.c
Translate Name:
-1 mod_lua.c
00 mod_rewrite.c
00 mod_proxy.c
00 mod_proxy_express.c
10 mod_alias.c
10 mod_userdir.c
10 mod_vhost_alias.c
10 mod_lua.c
21 mod_lua.c
30 core.c
mod_proxy.c
목록의 첫 번째 항목 임을 알 수 있습니다 .
내 (매우 제한된) 이해는 프록시 설정이 먼저 처리되고 WAR 파일이 반환되는 시점에 재정의가 적용되지 않는다는 것입니다.
Apache 문서에 설명된 대로 mod_rewrite
및 플래그 만 사용하여 프록시를 수행하는 방법에는 여러 가지가 있습니다.[P]
여기. 이 경우 유용할 수 있습니다.
답변2
.hataccess가 제대로 작동하려면 "rewrite" 모듈을 활성화해야 합니다:
a2enmod rewrite
service httpd restart