Когда я открываю PDF со ссылкой без www, я перенаправляюсь в родительскую папку

#php #.htaccess #pdf #redirect

#php #.htaccess #PDF #перенаправление

Вопрос:

В основном я получил http://avitel-bg.com/xdocs/MCACC.pdf

Когда я открываю его, я перенаправляюсь в родительскую папку xdocs (root), и я не могу просмотреть файл. Если я открою ссылку с помощью www (http://www.avitel-bg.com/xdocs/MCACC.pdf ) Я могу нормально просматривать PDF.

Это мой htaccess:

             Options  Indexes  FollowSymLinks -MultiViews

            RewriteEngine on
            rewritecond %{http_host} ^avitel-bg.com/ [nc]
            rewriterule ^(.*)$ http://www.avitel-bg.com/$1 [r=301,nc]

            # BEGIN products Rewrite
            RewriteRule ^(kadmin)(/.*)?$ - [L]
            RewriteRule ^(kadmin2)(/.*)?$ - [L]
            RewriteRule ^(polycomp)(/.*)?$ - [L]
            RewriteRule ^(.*)-cat([0-9] ) categories.php?cid=$2 [L,NC]
            RewriteRule ^([A-Za-z0-9-_] )/?$ products.php?pid=$1 [L]


            # END products Rewrite
            <IfModule mod_negotiation.c>
            ErrorDocument 404 /404.php
            </IfModule>

            <IfModule mod_geoip.c>
            GeoIPEnable On
            SetEnvIf GEOIP_COUNTRY_CODE (US|CH) DenyCountry
            </IfModule> 

            <IfModule mod_expires.c>
            ExpiresActive on
            ExpiresDefault "access plus 1 month"
            ExpiresByType application/javascript "access plus 1 year"
            ExpiresByType image/x-ico "access plus 1 year"
            ExpiresByType image/jpg "access plus 14 days"
            ExpiresByType image/jpeg "access plus 14 days"
            ExpiresByType image/gif "access plus 14 days"
            ExpiresByType image/png "access plus 14 days"
            ExpiresByType text/css "access plus 14 days"
            </IfModule>

            <IfModule mod_deflate.c>
            AddOutputFilterByType DEFLATE text/html text/xml text/css text/plain
            AddOutputFilterByType DEFLATE img/svg xml application/xhtml xml application/xml
            AddOutputFilterByType DEFLATE application/rdf xml application/rss xml application/atom xml
            AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript
            AddOutputFilterByType DEFLATE application/x-font-ttf application/x-font-otf
            AddOutputFilterByType DEFLATE font/truetype font/opentype
            </IfModule>

            <ifModule mod_gzip.c>
            mod_gzip_on Yes
            mod_gzip_dechunk Yes
            mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
            mod_gzip_item_include handler ^cgi-script$
            mod_gzip_item_include mime ^text/.*
            mod_gzip_item_include mime ^application/x-javascript.*
            mod_gzip_item_exclude mime ^image/.*
            mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
            </ifModule>

            <IfModule mod_rewrite.c>
              Options  FollowSymlinks
              RewriteEngine On
              RewriteBase /
                RewriteCond %{HTTP_HOST} !^www.
                RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
                RewriteRule ^index.php$ / [R=301,L]
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
            </IfModule>
  

Комментарии:

1. [r=301,nc] там нет L (ast), поэтому перезаписи могут продолжить обработку, и одно из ваших более поздних правил, вероятно, ОТМЕНЯЕТ то, что example.com ->www.example.com правило сработало.

2. Это не работает, когда я удаляю другие правила. Я просто не понимаю, как я перенаправляюсь, когда открываю http: // avitel-bg.com / xdocs /MCACC.pdf на http:// www .avitel-bg.com/MCACC.pdf . Это каким-то образом удаляет папку..

Ответ №1:

Проблема в вашем месте назначения перенаправления, поскольку оно перенаправляет все запросы, отличные от www, в root

Если вы хотите перенаправлять запросы, не относящиеся к www, во вложенную папку, измените свое последнее правило на это :

 RewriteEngine on
            rewritecond %{http_host} ^avitel-bg.com [nc]
            rewriterule ^(.*)$ http://www.avitel-bg.com/xdocs/$1 [r=301,nc,l]