#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]