Page 1 of 1

Pretty urls not working with https

Posted: Mon Mar 31, 2014 11:23 pm
by 5k313t0r
Hey everybody,

I am having an issue with one of my sites using https and pretty urls. The site works with the below .htaccess file as I expect. It forces a connection to https to ensure a secure connection and prevent connections from http.

Code: Select all

# Attempt to override some php settings, these settings may be helpful on some hosts if your
# default configuration does not meet CMS's minimum requirements, and your host
# has given your account appropriate permissions
# php_value upload_max_filesize "10M"
# php_value session_save_path "tmp/cache"

# php_flag magic_quotes_gpc Off
# php_flag register_globals Off
# php_flag session.use_trans_sid Off

# This is important, so uncomment if your host permit
# Options -Indexes
# ServerSignature Off
# php_value session.cookie_httponly true

# Options +FollowSymLinks

# To prevent E_STRICT problems with PHP 5.3+ you can uncomment the following lines
# Note: These settings should only be enabled for production sites!
# php_flag display_startup_errors 0
# php_flag display_errors 0
# php_flag html_errors 0
# php_value docref_root 0
# php_value docref_ext 0

<IfModule mod_rewrite.c>
RewriteEngine on
#
# Sub-dir e.g: /cmsms
RewriteBase /

# Forces https on url
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# 301 Redirect all requests that don't contain a dot or trailing slash to
# include a trailing slash
# but ignore POST requests.
# RewriteCond %{REQUEST_URI} !/$
# RewriteCond %{REQUEST_URI} !\.
# RewriteCond %{REQUEST_METHOD} !POST$
# RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L]

# Rewrites urls in the form of /parent/child/
# but only rewrites if the requested URL is not a file or directory
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [QSA]

</IfModule>

<IfModule mod_headers.c>
# Disable ETags
Header unset ETag
FileEtag None
# For Security
Header set X-Frame-Options "SAMEORIGIN"

# Sets secure header so can't connect through http initially
Header set Strict-Transport-Security "max-age=16070400; includeSubDomains"

</IfModule>

<IfModule mod_deflate.c>
# Compress css, plaintext, xml, gif, and images in transport.
AddOutputFilterByType DEFLATE text/css text/plain text/xml image/gif image/jpeg image/png
</IfModule>

<IfModule mod_expires.c>
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
# Set expires tags on various files... so that the browser wont attempt to reload them.
ExpiresActive On
ExpiresDefault "access plus 1 year"
<IfModule mod_headers.c>
  # Setting cache control to public allows proxy servers to cache the items too.
  Header set Cache-Control "public"
</IfModule>
</FilesMatch>
</IfModule>

When I turn on pretty urls by uncommenting the following lines:

Code: Select all

# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule ^(.+)$ index.php?page=$1 [QSA]
and adding this following line to config.php:

Code: Select all

$config['url_rewriting'] = 'mod_rewrite';
I can access the homepage but no sub/child pages. I get a 404 not found. The url seems to be correct (eg. ;https://sub.domain.com/home/privacy-policy ) and I have cleared both my browser and the CMS cache. I am not sure what the issue might be.

Does anyone have some insight to help display the child pages? Any help is appreciated. Thanks!

Re: Pretty urls not working with https

Posted: Tue Apr 01, 2014 7:35 am
by velden
Don't know yet what the problem is, but you say it's caused by protocol (https). But did you test pretty urls without the https redirection?

Re: Pretty urls not working with https

Posted: Tue Apr 01, 2014 4:15 pm
by 5k313t0r
Velden,
Sorry I forgot to mention that in my post. Yes, I had pretty urls working prior to adding the https redirect. I can get both pretty urls and the https redirect working independently of each other but as soon as I try to do both, that's when I get the 404 errors. I am wondering if it isn't just a small thing that I am not seeing. Or a setting in the CMS I am missing ( I have tried the "Use HTTPS for this page:" checkbox on individual pages as well ). I am admittedly a bit n00bish to the server side of things.

Re: Pretty urls not working with https

Posted: Tue Apr 01, 2014 6:08 pm
by Dr.CSS
From the fake link you posted it looks like the site is in a subfolder of the site, site.com/subfolder which you are using as a subdomain if so you may need to use the RewriteBase /subfolder setting in the htaccess, I have to use it when doing subdomains with pretty URLs, look at the Album link below...