regex - Apache mod_rewrite rule for complex sitemap + index xml files -
we manage sitemap (sitemap.org) files have in range of 500k links, changing enough want dynamically generate them, don't worry, we'll cache results period it's mod_rewrite rules i'm having problem with.
being have more 50k links need using sitemap index files. both sitemaps , index files redirected sitemap.php
file use filename pattern ($_server['request_uri']
) figure out list present.
the filename patterns follows:
www.domain.com/sitemap.index.xml www.domain.com/sitemap.some_theme.xml www.domain.com/sitemap.different_theme.xml
the mod_rewrite covers off our web application i'll include of in case else may overriding or conflicting i'm trying accomplish:
rewriteengine on rewritecond %{request_filename} -s [or] rewritecond %{request_filename} -l [or] rewritecond %{request_filename} -d rewriterule ^sitemap\.(.*)\.xml$ sitemap.php/ [nc,l] rewriterule ^.*$ - [nc,l] rewriterule ^.*$ index.php/ [nc,l] errordocument 404 /
the line i've inserted sitemaps is:
rewriterule ^sitemap\.(.*)\.xml$ sitemap.php/ [nc,l]
otherwise else standard web application stuff.
--- edit ---
ok, after head scratching, found problem. first, simplified rule since didn't need capture pattern match, positive response, new rule is:
rewriterule ^sitemap.*\.xml$ sitemap.php [nc,l]
so kicker swapping order of , 1 below:
rewriterule ^.*$ - [nc,l] rewriterule ^sitemap.*\.xml$ sitemap.php [nc,l]
i'm going leave question open now, because i'd know why made difference. thanks.
this rule redundant , should removed:
rewriterule ^.*$ - [nc,l]
modify code this:
options +followsymlinks -multiviews # turn mod_rewrite on rewriteengine on rewritebase / errordocument 404 / rewritecond %{request_filename} -s [or] rewritecond %{request_filename} -l rewriterule ^/?sitemap\. /sitemap.php [nc,l] rewriterule ^ /index.php [l]
Comments
Post a Comment