www.webdeveloper.com
Results 1 to 4 of 4

Thread: How do I make pages in individual directories?

  1. #1
    Join Date
    May 2009
    Location
    Rochester, NY
    Posts
    363

    Question How do I make pages in individual directories?

    I have been curious for a long time about how to make web pages with a page in each directory.

    Example:
    mysite.com
    mysite.com/tools
    mysite.com/about

    Usually, I just create one php page and leave it as index.php and use variables to call all other pages.

    Example:
    mysite.com/?p=tools
    mysite.com/?p=about

    This works fine, but I'd rather not develop sites this way. I can easily add my page code to each page in the directory, but I want to use one central document for governing all my PHP. What is the most professional way to handle this? I can think of many solutions, but what is the paradigm?

    Thanks,
    multi

  2. #2
    Join Date
    Jul 2003
    Location
    The City of Roses
    Posts
    2,503
    You can use a rewrite rule.

    Code:
    # .htaccess
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^/(.*)$ index.php?p=$1 [QSA,L]
    This translates a URL like /tools into index.php?p=tools.

    You can simplify this a little by removing the query string component, and instead check the REQUEST_URI in your code.

    Code:
    # .htaccess
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
    PHP Code:
    // index.php

    $uri $_SERVER['REQUEST_URI'];
    if (
    $uri == '/tools') {
        
    tools_page();
    } elseif (
    $uri == '/about') {
        
    about_page();
    } else {
        
    header('Status: 404 Not Found');
        echo 
    '<html><body><h1>Page Not Found</h1></body></html>';

    EDIT: Fixed mistake in conditions.
    Last edited by Jeff Mott; 09-19-2011 at 09:20 PM.
    for(split(//,'))*))91:+9.*4:1A1+9,1))2*:..)))2*:31.-1)4131)1))2*:3)"'))
    {for(ord){$i+=$_&7;grep(vec($s,$i++,1)=1,1..($_>>3)-4);}}print"$s\n";

  3. #3
    Join Date
    May 2009
    Location
    Rochester, NY
    Posts
    363
    Hmm... is this the going paradigm? I think there's a more conventional and simple way to do this, but I'm not sure what it is.

  4. #4
    Join Date
    Jul 2003
    Location
    The City of Roses
    Posts
    2,503
    That's the going paradigm. The major frameworks do it this way. For example, Zend, Symfony, CakePHP, CodeIgniter, and others -- they each have you define a mapping between an external URL and an internal action to perform.
    for(split(//,'))*))91:+9.*4:1A1+9,1))2*:..)))2*:31.-1)4131)1))2*:3)"'))
    {for(ord){$i+=$_&7;grep(vec($s,$i++,1)=1,1..($_>>3)-4);}}print"$s\n";

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles