Reputation: 33
I need to sort out my htaccess rules as i think this is the cause for many slow requests...
I have done the following that works but not sure if theres a better and efficient way other than the way i am doing it right now... i cant really change the structure before, so i have to do this way and change the way i structure it better in future .
I wanted it dynamic, without having to change the existing URLs, that alot of people are aware of and indexed already ages ago... Also, i dont want to permanently redirect....
My file structure, (all in the same folder)
# If requested resource exists as a file or directory go to it
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule (.*) - [L]
RewriteRule ^sitemap\.xml$ /sitemap.php [L]
# i dynamically change the page to AMP if /amp/pagename.php is accessed....
RewriteRule ^amp/(.*) /$1 [NC,QSA,L]
#i have added this one rule again as the amp page for the home page is just /amp and the rule above with the trailing slash, didnt execute...
RewriteRule ^amp(.*) /$1 [NC,QSA,L]
RewriteRule ^car-price-(.*)-([0-9]+).php$ _car-price-mn-yr.php?gpimnt=$1&gpiyr=$2 [QSA,L]
#car-price-january-2018.php <- multiple urls: all months, years from 2009 to now...
RewriteRule ^car-price-([0-9]+).php$ _car-price-yr.php?gpiyr=$1 [QSA,L]
#car-price-2009.php <- yearly summary, many urls: 2009 till now.
RewriteRule ^car-price-([A-Za-z-]+).php$ _car-price-wildcard.php?_gpwilcvar=$1 [NC,QSA,L]
#car-price-london.php <- similar to the above, making it confusing.... many cities...car-price-scotland.php etc
RewriteRule ^car-price-([\w-]+).php$ _car-price-wildcard.php?_gpwilcvar=$1 [NC,QSA,L]
#gbp-rate-today-usa.php <- i have different urls for e.g. cad.rate-today-usa.php, etc...
RewriteRule ^([\w-]+).php$ _car-price-wildcard.php?_gpwilcvar=$1 [NC,QSA,L]
#why-do-diesel-cars-cost-more.php <-i have many articles that does not have a prefix or some sort to make this easier..
these rules are making my website 4 seconds longer to load.... is there a better set of rules which can help, or is this the only way?
MOD REWRITE LOG:
[Sun Mar 04 22:21:55.879811 2018] [rewrite:trace3] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] strip per-dir prefix: /media/sf_repo/carPriceusa.comNEW/car-price-kolkata.php -> car-price-kolkata.php, referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.879861 2018] [rewrite:trace3] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] applying pattern '(.*)' to uri 'car-price-kolkata.php', referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.879992 2018] [rewrite:trace4] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] RewriteCond: input='/media/sf_repo/carPriceusa.comNEW/car-price-kolkata.php' pattern='-f' => not-matched, referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880117 2018] [rewrite:trace4] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] RewriteCond: input='/media/sf_repo/carPriceusa.comNEW/car-price-kolkata.php' pattern='-d' => not-matched, referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880128 2018] [rewrite:trace3] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] strip per-dir prefix: /media/sf_repo/carPriceusa.comNEW/car-price-kolkata.php -> car-price-kolkata.php, referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880135 2018] [rewrite:trace3] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] applying pattern '^sitemap\\.xml$' to uri 'car-price-kolkata.php', referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880144 2018] [rewrite:trace3] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] strip per-dir prefix: /media/sf_repo/carPriceusa.comNEW/car-price-kolkata.php -> car-price-kolkata.php, referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880151 2018] [rewrite:trace3] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] applying pattern '^amp/(.*)' to uri 'car-price-kolkata.php', referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880159 2018] [rewrite:trace3] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] strip per-dir prefix: /media/sf_repo/carPriceusa.comNEW/car-price-kolkata.php -> car-price-kolkata.php, referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880166 2018] [rewrite:trace3] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] applying pattern '^amp(.*)' to uri 'car-price-kolkata.php', referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880178 2018] [rewrite:trace3] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] strip per-dir prefix: /media/sf_repo/carPriceusa.comNEW/car-price-kolkata.php -> car-price-kolkata.php, referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880195 2018] [rewrite:trace3] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] applying pattern '^car-price-(.*)-([0-9]+).php$' to uri 'car-price-kolkata.php', referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880204 2018] [rewrite:trace3] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] strip per-dir prefix: /media/sf_repo/carPriceusa.comNEW/car-price-kolkata.php -> car-price-kolkata.php, referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880211 2018] [rewrite:trace3] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] applying pattern '^car-price-([0-9]+).php$' to uri 'car-price-kolkata.php', referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880219 2018] [rewrite:trace3] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] strip per-dir prefix: /media/sf_repo/carPriceusa.comNEW/car-price-kolkata.php -> car-price-kolkata.php, referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880226 2018] [rewrite:trace3] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] applying pattern '^car-price-([A-Za-z-]+).php$' to uri 'car-price-kolkata.php', referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880235 2018] [rewrite:trace2] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] rewrite 'car-price-kolkata.php' -> '_car-price-wildcard.php?_gpwilcvar=kolkata', referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880243 2018] [rewrite:trace3] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] split uri=_car-price-wildcard.php?_gpwilcvar=kolkata -> uri=_car-price-wildcard.php, args=_gpwilcvar=kolkata, referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880250 2018] [rewrite:trace3] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] add per-dir prefix: _car-price-wildcard.php -> /media/sf_repo/carPriceusa.comNEW/_car-price-wildcard.php, referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880259 2018] [rewrite:trace2] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] strip document_root prefix: /media/sf_repo/carPriceusa.comNEW/_car-price-wildcard.php -> /_car-price-wildcard.php, referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880266 2018] [rewrite:trace1] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c37370a0/initial] [perdir /media/sf_repo/carPriceusa.comNEW/] internal redirect with /_car-price-wildcard.php [INTERNAL REDIRECT], referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880509 2018] [rewrite:trace3] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c372d028/initial/redir#1] [perdir /media/sf_repo/carPriceusa.comNEW/] strip per-dir prefix: /media/sf_repo/carPriceusa.comNEW/_car-price-wildcard.php -> _car-price-wildcard.php, referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880519 2018] [rewrite:trace3] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c372d028/initial/redir#1] [perdir /media/sf_repo/carPriceusa.comNEW/] applying pattern '(.*)' to uri '_car-price-wildcard.php', referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880744 2018] [rewrite:trace4] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c372d028/initial/redir#1] [perdir /media/sf_repo/carPriceusa.comNEW/] RewriteCond: input='/media/sf_repo/carPriceusa.comNEW/_car-price-wildcard.php' pattern='-f' => matched, referer: http://carpriceusav2.local/silver-price-usa.php
[Sun Mar 04 22:21:55.880758 2018] [rewrite:trace1] [pid 11803] mod_rewrite.c(476): [client 192.168.0.17:51780] 192.168.0.17 - - [carpriceusav2.local/sid#7fe0c37f2140][rid#7fe0c372d028/initial/redir#1] [perdir /media/sf_repo/carPriceusa.comNEW/] pass through /media/sf_repo/carPriceusa.comNEW/_car-price-wildcard.php, referer: http://carpriceusav2.local/silver-price-usa.php
Upvotes: 1
Views: 239
Reputation: 80639
Combine the /amp
rules:
RewriteRule ^amp(/.+)? /$1 [NC,QSA,L]
As a general rule of thumb, avoid using the .*
matching, as the *
is greedy and creates a larger backtracking.
Next, instead of having separate PHP scripts accepting the optional gpimnt
parameter, you can do this in a single PHP file. If the value for the same is not present, proceed with only the gpiyr
value received. This can again be combined with conditional gpwilcvar
parameter etc. and reducing the total number of patterns your URL will be matched against. A single defined()
(or isset()
) call inside PHP is faster than pattern matching.
Upvotes: 1