문제

나는 사용하고있다 .htaccess 그리고 mod_rewrite DocumentRoot 뒤에 있는 파일을 가리킵니다.내 폴더 구조는 다음과 같습니다.

home/
    webroot/
    other_files/

나는 .htaccess 다음 내용을 포함하는 webroot의 파일:

RewriteEngine on
RewriteRule ^(.*)$ /home/other_files/$1

내가 접근하려고 하면 http://example.com/file.html 다음 오류가 발생합니다.

요청한 URL /home/other_files/file.html을 이 서버에서 찾을 수 없습니다.

DocumentRoot 뒤에 있는 파일을 로드하는 것도 가능합니까?그렇다면 누군가 나에게 올바른 방향을 알려줄 수 있습니까?

도움이 되었습니까?

해결책

나는 당신이 섹션을 추가해야한다고 생각합니다

<Directory "/home/other_files">
  (options)
</Directory>

Apache가 서버 구성에서 무엇이든 제공할 수 있기 전에 서버 구성에 추가하세요.예를 들어 내 DocumentRoot는 /var/www이지만 기본 사용 가능한 사이트에는 다음 섹션이 있습니다.

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

그런 다음 /doc/로 이동하기 위해 URL을 다시 작성할 수 있으며 서버는 파일을 어디서 가져올 수 있는지 알 수 있습니다.

다른 팁

해당 규칙이 작동하지 않는 이유를 알아보세요.

다시 쓸 수 없는 이유 /home/other\_files/file.html mod_rewrite가 경로를 다음과 같이 구문 분석한다는 것입니다. /home/webroot/home/other\_files/file.html mod_rewrite의 관점에서 앞의 슬래시는 문서 루트와 동일하므로 /home/webroot.

Ryan Ahearn의 제안 괜찮은 경로이고 아마도 당신이 가고 싶은 경로일 것입니다.

크레딧은 Ryan Aheam에게 있지만 철자를 설명하겠습니다.저는 초보자이고 Ryan의 답변에도 불구하고 구문을 올바르게 만들기 위해 몇 가지 실험을 해야 했습니다.

내 DocumentRoot가 내 cakephp 디렉토리가 되기를 원했습니다.하지만 나는 일반적인 PHP이고 cakephp 디렉토리에는 없는 Mantis Bug 추적기를 갖고 있었습니다.아래 파일은 다음과 같이 작동합니다.

http://www.my_website.com :/var/www/cakephp에서 제공

http://www.my_website.com/mantisbt :/var/www/html/mantisbt에서 제공

파일 /etc/httpd/conf/httpd.conf

Alias /mantisbt/ "/var/www/html/mantisbt/"                                                                          
<Directory "/var/www/html/">                                                                                        
    AllowOverride All                                                                                               
</Directory>                                                                                                        

<VirtualHost *:80>                                                                                                  
    ServerAdmin me@my_email.com                                                                             
    DocumentRoot /var/www/cakephp                                                                                   
    ServerName my_website.com                                                                                      
    <Directory /var/www/cakephp/>                                                                                   
        AllowOverride All                                                                                           
    </Directory>                                                                                                    
</VirtualHost>

파일 /var/www/cakephp/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^mantisbt/?$   /mantisbt/  [NC,L]
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top