简体   繁体   中英

Apache: difference virtualhost and htaccess

I set up a private server (raspberry) with apache. the config file for the website:

<VirtualHost *:80>
    ServerName me.example.com
    ServerAlias me.example.com
        RewriteEngine On
#only rewrite if not one of the followed files is requested
       RewriteCond %{REQUEST_URI} !^/images/.*\.(jpg|ico|png|mp4|ogg)
       RewriteCond %{REQUEST_URI} !^/css/.*\.css
       RewriteCond %{REQUEST_URI} !^/js/.*\.js
#rewrite all requests to index.php and get path (only intern)
        RewriteRule ^/([^/]*)/(.*)$ /index.php?lang=$1&path=$2 [NC]

DocumentRoot /var/www/my/root
    <Directory /var/www/my/root>
            Options FollowSymLinks
            Options -Indexes
            AllowOverride All
            Order allow,deny
            Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

1.) If I request now a "subpage" like /impressum.php. It will show me the impressum, instead of rewriting to the index file. Why?

2.) Now I copied the part of the rewrite engine into a .htaccess file and it doesn't work anymore. Where is the difference between these two files? What do I need to change, so it will work? My .htaccess file looks like:

Options +FollowSymLinks
RewriteEngine On
#only rewrite if not one of the followed files is requested
RewriteCond %{REQUEST_URI} !^/images/.*\.(jpg|ico|png|mp4|ogg)
RewriteCond %{REQUEST_URI} !^/css/.*\.css
RewriteCond %{REQUEST_URI} !^/js/.*\.js
#rewrite all requests to index.php and get path (only intern)
RewriteRule ^/([^/]*)/(.*)$ /index.php?lang=$1&path=$2 [NC,L,QSA]

Thanks in advance

the files were missing ... so it redirected to the home. It works better then me

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM