Mod-Rewrite loading files behind the DocumentRoot

前端 未结 3 918
借酒劲吻你
借酒劲吻你 2021-01-04 07:10

I\'m using .htaccess and mod_rewrite to point to files that reside behind the DocumentRoot. My folder structure looks like this:

ho         


        
相关标签:
3条回答
  • 2021-01-04 07:45

    Just so you know why that rule doesn't work:

    The reason that it isn't able to rewrite to /home/other_files/file.html is that mod_rewrite is parsing the path as /home/webroot/home/other_files/file.html since from mod_rewrite's point of view the preceding slash is equivalent to your document root of /home/webroot.

    Ryan Ahearn's suggestion is a decent one, and is likely the route you want to go.

    0 讨论(0)
  • 2021-01-04 07:54

    The credit goes to Ryan Aheam, but I'm going to spell it out. I'm a beginner and even with Ryan's answer I had to experiment with a few things to get the syntax right.

    I wanted my DocumentRoot to be my cakephp directory. But then I had a Mantis Bug tracker that was just regular PHP and so not in the cakephp directory. The the files below I have the following working.

    http://www.example.com : served by /var/www/cakephp

    http://www.example.com/mantisbt : served by /var/www/html/mantisbt

    File /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>
    

    File /var/www/cakephp/.htaccess

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteRule    ^mantisbt/?$   /mantisbt/  [NC,L]
        RewriteRule    ^$    webroot/    [L]
        RewriteRule    (.*) webroot/$1    [L]
    </IfModule>
    
    0 讨论(0)
  • 2021-01-04 08:08

    I believe you need to add a section with

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

    to your server configuration before apache will be able to serve anything from it. For an example, my DocumentRoot is /var/www but there is this section in the default available site:

    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>
    

    You could then rewrite a URL to go to /doc/ and the server would know where to get the files from.

    0 讨论(0)
提交回复
热议问题