Search code examples
phpapacheurldynamic-url

PHP: htaccess default variable


I want to set a default variable for a query that comes at the end of a url

The .htaccess file redirects the url as follows:

http://www.server.com/folder/subfolder/index.php?page="some-page-name"

displayed url

http://www.server.com/folder/some-page-name


if the page name is not set, as in:

http://www.server.com/folder/

the default would be "index". I could use php function header("location:url") but that would display the "index" part at the end if the url... that I don't want.



htacess content

   Options -Indexes

    <IfModule mod_rewrite.c>
    RewriteEngine On
    #RewriteCond %{REQUEST_URI} !^(/index\.php|/img|/js|/css|/robots\.txt|/favicon\.ico)
    RewriteBase /folder/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^.*\.css.*$ [NC]
    RewriteRule ^(.*)$ subfolder/index.php/?page=$1 [L]
    </IfModule>

    <IfModule mod_rewrite.c> 
    ErrorDocument 404 /error.html
    ErrorDocument 403 /error.html
    </IfModule>

Solution

  • You don't have to redirect to index.php. You can use something like:

    header('Location: /folder/front-page');
    

    If you just want http://example.com/folder/ show up your index page, you could use the following in your PHP script:

    $requested_page = filter_input(INPUT_GET, 'pageID');
    $allowed_pages = array('some-page', 'some-page-name');
    if($requested_page == ''){
       // display your index page as ?pageID is not set or empty
    }
    elseif(in_array($requested_page, $allowed_pages)){
       // display $requested_page
    }
    else{
       // display a 404 Not Found error
    }