简体   繁体   中英

htaccess rewrite to https except for few pages and files

I use htaccess file to rewrite some url's and also to rewrite http requests to https:

# No Caching for page files
<filesMatch "\.(html|htm|js|css|php)$">
<IfModule mod_headers.c>
    Header set Cache-Control "no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires 0
</IfModule>
</filesMatch>

# Error pages
ErrorDocument 404 https://%{HTTP_HOST}/#/404
ErrorDocument 500 https://%{HTTP_HOST}/#/500

RewriteEngine On

# Rewrite www to non
RewriteCond %{HTTP_HOST} !=""
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R,L]

# Rewrite http to https
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} !^\/tvgids\/
RewriteRule ^/?(.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

# Ignore conditions for files and folders
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteBase /

# Rewrite /api to api.php
RewriteRule ^api/(.+)$ api/api.php [QSA,L]

# Rewrite /tvgids to guide/index.php
RewriteRule ^tvgids/(.+)$ guide/index.php [QSA,L]

# Rewrite /tv to m3u/index.php
RewriteRule ^tv/(.+)$ m3u/index.php [QSA,L]

# Rewrite /get to get/index.php
RewriteRule ^get/(.+)$ get/index.php

# Rewrite /downloads to downloads.php
# RewriteRule ^download/(.+)$ download/download.php [QSA,L]

But the rewrite condition for /tvgids doesnt work:

RewriteCond %{REQUEST_URI} !^\/tvgids\/

Instead if i try to enter /tvgids/abc i get a 404.

I need all pages to rewrite to https, except for a few pages because they are used in apps on android which do not support https.

Can anyone help me with this - now i have to disable ssl for all pages because else nothing works. I dont see what i am doing wrong, is the condition not set right?

I also tried this:

RewriteCond %{REQUEST_URI} !(tvgids\/.*|tv\/.*|get\/.*|\.png|\.jpg|\.jpeg|\.ico)$ [NC]

which also redirects me to https.. but if i test it here: https://htaccess.madewithlove.be/

It does work -- so am i doing something wrong here?

I actually got it working with this code:

# Rewrite http to https
RewriteCond %{HTTPS} !=on
RewriteCond %{THE_REQUEST} !(/tvgids/|/tv/) [NC]
RewriteRule ^/?(.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

the RewriteCond %{THE_REQUEST} !/tvgids/ [NC] sets a condition where no redirecting to https will be done when tvgids/ is the request. And i didnt need to exclude image file types because i already set a condition to exclude folders and files..

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