We use cookies to improve your experience. No personal information is gathered and we don't serve ads. Cookies Policy.

ExpressionEngine Logo ExpressionEngine
Features Pricing Support Find A Developer
Partners Upgrades
Blog Add-Ons Learn
Docs Forums University
Log In or Sign Up
Log In Sign Up
ExpressionEngine Logo
Features Pro new Support Find A Developer
Partners Upgrades
Blog Add-Ons Learn
Docs Forums University Blog
  • Home
  • Forums

.htaccess file - stripping out "index_php?"

How Do I?

fensterbaby's avatar
fensterbaby
289 posts
one year ago
fensterbaby's avatar fensterbaby

My htaccess code removes “index.php” from urls but it’s supposed to strip out “index.php?”

it leaves the ? which produces a 404 error. htaccess coding is way beyond me

here is my code:

RewriteOptions inherit
DirectoryIndex   index.php index.html

#############
# Redirects #
#############

# Redirect 301 /alaska-wrangell-skyscraper.html https://www.trekalaska.com/alaska-hiking-backpacking-trips/wrangell-skyscraper-traverse

###########
# Caching #
###########

Header unset Pragma
FileETag None
Header unset ETag
#1 Year
<FilesMatch "\.(jpg|jpeg|png|gif|swf|flv|ico)$">
Header set Cache-Control "max-age=31556926, public"
</FilesMatch>
#1 Month
<FilesMatch "\.(js|css)$">
Header set Cache-Control "max-age=2629743, public"
</FilesMatch>
#1 Week
<FilesMatch "\.(html|htm|txt|php)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>

###############
# Compression #
###############

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/xml text/css text/plain
AddOutputFilterByType DEFLATE image/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_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    # Removes index.php from ExpressionEngine URLs
    RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
    RewriteCond %{REQUEST_URI} !/system/.* [NC]
    RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

    # Directs all EE web requests through the site index file
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

# Enable Compression
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE font/opentype
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/plain
</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>

# Leverage Browser Caching
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresByType image/jpg "access 1 year"
  ExpiresByType image/jpeg "access 1 year"
  ExpiresByType image/gif "access 1 year"
  ExpiresByType image/png "access 1 year"
  ExpiresByType text/css "access 1 month"
  ExpiresByType text/html "access 1 month"
  ExpiresByType application/pdf "access 1 month"
  ExpiresByType text/x-javascript "access 1 month"
  ExpiresByType application/x-shockwave-flash "access 1 month"
  ExpiresByType image/x-icon "access 1 year"
  ExpiresDefault "access 1 month"
</IfModule>
<IfModule mod_headers.c>
  <filesmatch "\.(ico|flv|jpg|jpeg|png|gif|css|swf)$">
  Header set Cache-Control "max-age=2678400, public"
  </filesmatch>
  <filesmatch "\.(html|htm)$">
  Header set Cache-Control "max-age=7200, private, must-revalidate"
  </filesmatch>
  <filesmatch "\.(pdf)$">
  Header set Cache-Control "max-age=86400, public"
  </filesmatch>
  <filesmatch "\.(js)$">
  Header set Cache-Control "max-age=2678400, private"
  </filesmatch>
</IfModule>

# RewriteEngine On
# RewriteCond %{HTTP_HOST} ^trekalaska.com [NC]
# RewriteRule ^(.*)$ https://www.trekalaska.com/$1 [L,R=301]
# Permanent URL redirect - generated by www.rapidtables.com
# Permanent URL redirect - generated by www.rapidtables.com

Redirect 301 /trips/alaska-wrangell-skyscraper.html https://www.trekalaska.com/alaska-hiking-backpacking-trips/wrangell-skyscraper-traverse
Redirect 301 /alaska-hiking-backpacking-trips/seven-pass-route-iceberg-lake-to-bremner https://www.trekalaska.com/alaska-hiking-backpacking-trips/seven-pass-route-iceberg-to-bremner
Redirect 301 /index.php?/trips/alaska-wrangell-skyscraper.html https://www.trekalaska.com/alaska-hiking-backpacking-trips/wrangell-skyscraper-traverse
Redirect 301 /alaskas-wrangell-st.-elias-national-park/kennicott-alaska https://www.trekalaska.com/wrangell-st-elias-national-park/kennicott-alaska
Redirect 301 /index.html https://www.trekalaska.com


# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php80” package as the default “PHP” programming language.
<IfModule mime_module>
  AddHandler application/x-httpd-ea-php80___lsphp .php .php8 .phtml
</IfModule>
RewriteCond %{HTTP_HOST} ^.*$
RewriteRule ^alaska\-hiking\-backpacking\-trips\/seven\-pass\-route\-iceberg\-lake\-to\-bremner$ "https\:\/\/www\.trekalaska\.com\/alaska\-hiking\-backpacking\-trips\/seven\-pass\-route\-iceberg\-to\-bremner" [R=301,L]
       
DuBose Web's avatar
DuBose Web
10 posts
one year ago
DuBose Web's avatar DuBose Web

Do you have force url query strings turned on?

Docs: https://docs.expressionengine.com/latest/general/url-structure.html#query-strings

If so, I recommend turning it off.

👆 1
       
jaimeramirez's avatar
jaimeramirez
4 posts
one year ago
jaimeramirez's avatar jaimeramirez

Hello @ uno online To modify the code to strip out “index.php?” and keep the query string, you can make the following changes:

apache <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /

# Removes index.php from ExpressionEngine URLs
RewriteCond %{THE_REQUEST} ^GET.*index\.php\? [NC]
RewriteCond %{REQUEST_URI} !/system/.* [NC]
RewriteRule ^index\.php$ / [R=301,NE,L]

# Directs all EE web requests through the site index file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

</IfModule>

With these changes, the htaccess code will redirect URLs with “index.php?” to the root URL without the query string. Please note that modifying htaccess files can be complex, and it’s recommended to have a backup and test thoroughly after making any changes.

       
neha's avatar
neha
3 posts
one year ago
neha's avatar neha

Hey hi, please remove index_php? from URL in your .htaccess file. ex,

RewriteCond %{THE_REQUEST} ^GET.*index\.php\? [NC]
RewriteRule ^(.*)index\.php$ /$1 [R=301,NE,L]

With the help of Redirect Checker, you will be able to track the chain of redirects to which your page redirects. It is advisable to set up redirects on the site in such a way that there is only one redirect between the start and end URL.

       

Reply

Sign In To Reply

ExpressionEngine Home Features Pro Contact Version Support
Learn Docs University Forums
Resources Support Add-Ons Partners Blog
Privacy Terms Trademark Use License

Packet Tide owns and develops ExpressionEngine. © Packet Tide, All Rights Reserved.