Search code examples
phpapache.htaccessmod-rewrite

htaccess rewrite XML sitemap and user friendly sitemap


I have two scripts:

  • xmlsitemap.php (Google XML sitemap)
  • sitemap.php (GUI user friendly sitemap)

I want to achieve this with rewrite rules:

Rewrite to site.com/sitemap.php
site.com/sitemap
site.com/sitemap/

Rewrite to site.com/xmlsitemap.php
site.com/sitemap.xml

Here is what I have tried. The problem is it's rewriting sitemap.xml to sitemap.php (GUI).

Options +FollowSymlinks
RewriteEngine On

RewriteRule sitemap.xml xmlsitemap.php
RewriteRule sitemap sitemap.php

# also tried using [L] option on both

Solution

  • First of all, re-add the [L] flag. Second, if one rule supersedes the other, check your rewrite rules regex to make them better matching, like the whole request:

    RewriteRule ^sitemap\.xml$ xmlsitemap.php [L]
    RewriteRule ^sitemap$ sitemap.php [L]
    

    The L flag will prevent to run additional rules if one already matched (but still can trigger an internal redirect, see as well the END flag instead of the L flag).