##
# phpMyFAQ .htaccess file for Apache 2.x
#
# This Source Code Form is subject to the terms of the Mozilla Public License,
# v. 2.0. If a copy of the MPL was not distributed with this file, You can
# obtain one at http://mozilla.org/MPL/2.0/.
#
# @author    Thorsten Rinne <thorsten@phpmyfaq.de>
# @author    Patrick Preuster <sica@php-q.net>
# @author    Matteo Scaramuccia <matteo@scaramuccia.com>
# @copyright 2004-2020 phpMyFAQ Team
# @license   http://www.mozilla.org/MPL/2.0/ Mozilla Public License Version 2.0
# @link      https://www.phpmyfaq.de
# @since     2004-11-13

# always follow the symlinks
Options +FollowSymlinks -MultiViews -Indexes 

# X-Frame-Options to prevent clickjacking
Header always append X-Frame-Options SAMEORIGIN

# if you want to use mod_rewrite, set this 'On'
RewriteEngine On

<IfModule mod_fcgid.c>
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

# the path to your phpMyFAQ installation
RewriteBase /

# Error pages
ErrorDocument 404 /index.php?action=404

# show all categories
RewriteCond %{REQUEST_URI}          /showcat\.html$ [NC]
RewriteRule ^(.*)$                  index.php?action=show [L,QSA]

# the search page
RewriteCond %{REQUEST_URI}          /search\.html$ [NC]
RewriteRule ^(.*)$                  index.php?action=search [L,QSA]

# opensearch
RewriteCond %{REQUEST_URI}          /opensearch\.xml [NC]
RewriteRule ^(.*)$                  opensearch.php [L,QSA]

# the add content page
RewriteCond %{REQUEST_URI}          /addcontent\.html$ [NC]
RewriteRule ^(.*)$                  index.php?action=add [L,QSA]

# the ask question page
RewriteCond %{REQUEST_URI}          /ask\.html$ [NC]
RewriteRule ^(.*)$                  index.php?action=ask [L,QSA]

# the open questions page
RewriteCond %{REQUEST_URI}          /open-questions\.html$ [NC]
RewriteRule ^(.*)$                  index.php?action=open-questions [L,QSA]

# the help page
RewriteCond %{REQUEST_URI}          /help\.html$ [NC]
RewriteRule ^(.*)$                  index.php?action=help [L,QSA]

# the contact page
RewriteCond %{REQUEST_URI}          /contact\.html$ [NC]
RewriteRule ^(.*)$                  index.php?action=contact [L,QSA]

# the glossary page
RewriteCond %{REQUEST_URI}          /glossary\.html$ [NC]
RewriteRule ^(.*)$                  index.php?action=glossary [L,QSA]

# the overview page
RewriteCond %{REQUEST_URI}          /overview\.html$ [NC]
RewriteRule ^(.*)$                  index.php?action=overview [L,QSA]

# the login page
RewriteCond %{REQUEST_URI}          /login\.html$ [NC]
RewriteRule ^(.*)$                  index.php?action=login [L,QSA]

# start page
RewriteRule ^index.html$            index.php [PT]

# a solution id page
RewriteCond %{REQUEST_URI}              solution_id_([0-9]+)\.html$ [NC]
RewriteRule ^solution_id_(.*)\.html$    index.php?solution_id=$1 [L,QSA]

# PMF faq record page
# * http://[...]/content/1/1/<LANGUAGE CODE>/<FAQ TOPIC>.htm
# * http://[...]/content/1/1/<LANGUAGE CODE>/<FAQ TOPIC>.html
RewriteRule content/([0-9]+)/([0-9]+)/([a-z\-]+)/(.+)\.htm(l?)$     index.php?action=faq&cat=$1&id=$2&artlang=$3 [L,QSA]

# PMF category page with page count
# * http://[...]/category/1/<PAGE NUMBER/<CATEGORY NAME>.htm
# * http://[...]/category/1/<PAGE NUMBER/<CATEGORY NAME>.html
RewriteRule category/([0-9]+)/([0-9]+)/(.+)\.htm(l?)$               index.php?action=show&cat=$1&seite=$2 [L,QSA]

# PMF category page
# * http://[...]/category/1/<CATEGORY NAME>.htm
# * http://[...]/category/1/<CATEGORY NAME>.html
RewriteRule category/([0-9]+)/(.+)\.htm(l?)$                        index.php?action=show&cat=$1 [L,QSA]

# PMF news page
# * http://[...]/news/<ID>/<LANGUAGE CODE>/<HEADER>.htm
# * http://[...]/news/<ID>/<LANGUAGE CODE>/<HEADER>.html
RewriteRule news/([0-9]+)/([a-z\-]+)/(.+)\.htm(l?)$                 index.php?action=news&newsid=$1&newslang=$2 [L,QSA]

# PMF sitemap
# * http://[...]/sitemap/<LETTER>/<LANGUAGE CODE>.htm
# * http://[...]/sitemap/<LETTER>/<LANGUAGE CODE>.html
RewriteRule sitemap/([^\/]+)/([a-z\-]+)\.htm(l?)$                   index.php?action=sitemap&letter=$1&lang=$2 [L,QSA]

# PMF Google sitemap
# * http://[...]/sitemap.xml
# * http://[...]/sitemap.gz
# * http://[...]/sitemap.xml.gz
RewriteRule sitemap.xml$                                            sitemap.xml.php [L]
RewriteRule sitemap.gz$                                             sitemap.xml.php?gz=1 [L]
RewriteRule sitemap.xml.gz$                                         sitemap.xml.php?gz=1 [L]

# PMF tags page with page count
# * http://[...]/tags/<ID>/<PAGE NUMBER>/<HEADER>.htm
RewriteRule tags/([0-9]+)/([0-9]+)/(.+)\.htm(l?)$                   index.php?action=search&tagging_id=$1&seite=$2 [L,QSA]

# PMF tags page
# * http://[...]/tags/<ID>/<HEADER>.htm
RewriteRule tags/([0-9]+)/([^\/]+)\.htm(l?)$                        index.php?action=search&tagging_id=$1 [L,QSA]

# REST/JSON API v1
# * http://[...]/api/<ACTION>/<LANGUAGE CODE>/<...>
# @deprecated These APIs will be removed in phpMyFAQ 3.1
RewriteRule api/getVersion                                  api.php?action=getVersion [L,QSA]
RewriteRule api/getApiVersion                               api.php?action=getApiVersion [L,QSA]
RewriteRule api/getCount                                    api.php?action=getCount [L,QSA]
RewriteRule api/getDefaultLanguage                          api.php?action=getDefaultLanguage [L,QSA]
RewriteRule api/search/([a-z\-]+)/([a-z\-]+)$               api.php?action=search&lang=$1&q=$2 [L,QSA]
RewriteRule api/getCategories/([a-z\-]+)                    api.php?action=getCategories&lang=$1 [L,QSA]
RewriteRule api/getFaqs/([a-z\-]+)/([0-9]+)                 api.php?action=getFaqs&lang=$1&categoryId=$2 [L,QSA]
RewriteRule api/getFaq/([a-z\-]+)/([0-9]+)                  api.php?action=getFaq&lang=$1&recordId=$2 [L,QSA]
RewriteRule api/getComments/([0-9]+)                        api.php?action=getComments&recordId=$1 [L,QSA]
RewriteRule api/getAllFaqs/([a-z\-]+)                       api.php?action=getAllFaqs&lang=$1 [L,QSA]
RewriteRule api/getFaqAsPdf/([a-z\-]+)/([0-9]+)/([0-9]+)    api.php?action=getFaqAsPdf&lang=$1&categoryId=$2&recordId=$3 [L,QSA]
RewriteRule api/getAttachmentsFromFaq/([a-z\-]+)/([0-9]+)   api.php?action=getAttachmentsFromFaq&lang=$1&recordId=$2 [L,QSA]
RewriteRule api/getPopular/([a-z\-]+)                       api.php?action=getPopular&lang=$1 [L,QSA]
RewriteRule api/getLatest/([a-z\-]+)                        api.php?action=getLatest&lang=$1 [L,QSA]
RewriteRule api/getNews/([a-z\-]+)                          api.php?action=getNews&lang=$1 [L,QSA]
RewriteRule api/getPopularSearches/([a-z\-]+)               api.php?action=getPopularSearches&lang=$1 [L,QSA]
RewriteRule api/getPopularTags                              api.php?action=getPopularTags [L,QSA]
RewriteRule api/getFAQsByTag/([a-z\-]+)/([0-9]+)            api.php?action=getFAQsByTag&lang=$1&tagId=$2 [L,QSA]
RewriteRule api/login                                       api.php?action=login [L,QSA]

# REST API v2.0
# * http://[...]/api/v2.0/<ACTION>
RewriteRule api/v2.0/version                       api.php?action=version [L,QSA]
RewriteRule api/v2.0/language                      api.php?action=language [L,QSA]
RewriteRule api/v2.0/categories                    api.php?action=categories [L,QSA]
RewriteRule api/v2.0/searches/popular              api.php?action=searches&filter=popular [L,QSA]
RewriteRule api/v2.0/search                        api.php?action=search [L,QSA]
RewriteRule api/v2.0/tags                          api.php?action=tags [L,QSA]
RewriteRule api/v2.0/open-questions                api.php?action=open-questions [L,QSA]
RewriteRule api/v2.0/comments/([0-9]+)             api.php?action=comments&recordId=$1 [L,QSA]
RewriteRule api/v2.0/attachments/([0-9]+)          api.php?action=attachments&recordId=$1 [L,QSA]
RewriteRule api/v2.0/news                          api.php?action=news [L,QSA]
RewriteRule api/v2.0/login                         api.php?action=login [L,QSA]
RewriteRule api/v2.0/faqs/([0-9]+)                 api.php?action=faqs&categoryId=$1 [L,QSA]
RewriteRule api/v2.0/faqs/popular                  api.php?action=faqs&filter=popular [L,QSA]
RewriteRule api/v2.0/faqs/latest                   api.php?action=faqs&filter=latest [L,QSA]
RewriteRule api/v2.0/faqs/sticky                   api.php?action=faqs&filter=sticky [L,QSA]
RewriteRule api/v2.0/faqs/tags/([0-9]+)            api.php?action=faqs&tagId=$1 [L,QSA]
RewriteRule api/v2.0/faqs                          api.php?action=faqs [L,QSA]
RewriteRule api/v2.0/faq/([0-9]+)/([0-9]+)         api.php?action=faq&categoryId=$1&recordId=$2 [L,QSA]

# REST API v2.1 - not implemented yet
# * http://[...]/api/v2.1/<ACTION>
RewriteRule api/v2.1/register                      api.php?action=register [L,QSA]
