Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 7 of 7
  1. #1
    New Coder
    Join Date
    Nov 2009
    Posts
    39
    Thanks
    2
    Thanked 0 Times in 0 Posts

    Rewrite rule, need some help.

    So far I have:
    Code:
    Options +FollowSymLinks
    RewriteEngine on
    RewriteRule \.(gif|png|jpg|css|js)$|^index\.php$ - [L]
    RewriteRule ^quests/(.*)/(.*)$ quests.php?flibble=questview&id=$2&ic=1
    RewriteRule ^(.*)$ index.php?page=$1
    What I'm trying to do is.

    www.mysite.com/quests works fine, the images load and so does the content.

    However, if I do something like

    www.mysite.com/quests/

    it fails to load the images or the content.

    I'm also trying to dynamically create a page.

    so that www.mysite.com/quests/questname/questid would load the appropriate information. The link currently looks like
    quest.php?flibble=questview&id=QUESTID&ic=1 where QUESTID is the number of the quest entry. However, I just can't get my head around it.

    This is my function for showing the quest:
    PHP Code:
    function questview($id) {

    require_once (
    'includes/connect.php');//connect to db
    include ('includes/steps.php');
     
    /* query for item */
        
    $query "SELECT * FROM quest WHERE id=$id";
        
    $result mysql_query ($query);
        
        
    /* if we get no results back, error out */
    $numrtn mysql_num_rows($result);

        if (
    $numrtn == 0) {
            echo 
    "The quest guide requested cannot be found\n";
            echo 
    $id;
            return;
        }
        
    $row mysql_fetch_assoc($result);
        
    /* easier to read variables and 
         * striping out tags */
        
    $id $row['id'];
        
    $name $row['name'];
        
    $contributors $row['contributors'];
        
    $guideby $row['guideby'];
        
    $added $row['added'];
        
    $location $row['startinglocation'];
        
    $members $row['members'];
        
    $description $row['description'];
        
    $difficulty $row['difficulty'];
        
    $requirements $row['requirements'];
        
    $items $row['items'];
        
    $reward $row['reward'];
        
    $guide $row['mainbody'];
        
    $length $row['length'];
        
    $updated $row['updated'];
        if (
    $members == "Y") {
            
    $mem "members only quest</b>, so it can only be done on a <b>members</b> server.";
        }else{
            
    $mem "non-members quest</b>.";
        }
        if (
    $updated == 0){
        
    $up 'No-one has updated this quest guide';    
        }else{    
        
    $date2 date("l jS F Y @ H:i:s "$updated);
        
    $up 'It was last updated on '.$date2;
        }
        if (
    $contributors != ""){
        
    $con 'Thanks also to <b>'.$contributors.'</b> for changes.';    
        }else{
        
    $con 'No-one else has contributed to this quest guide.';
        }
        
    //$date = date("D M jS, Y g:i a", $added);
        
    $date date("l jS F Y @ H:i:s "$added);
        
    echo 
    '
    <div id="quest"><table width="100%" border="0">
      <tr>
        <td>
            <h1 align="center">'
    .$name.'</h1>
    '
    ;
    echo 
    step_js();
    echo 
    pick_clue($id);
    echo 
    toggle_reward();
    echo 
    toggle_clue();
    echo 
    '<br>';
    echo 
    '
    <p class="text1">This quest guide was written by <b>'
    .$guideby.'</b> for use on Runehints and entered into the database on '.$date.'. '.$up.'. '.$con.'  <br /></p>
    <p><span class="text1"><br />This quest is <b>'
    .$mem.'</span></p>
    <p>
    <span class="qtitle">Description: </span><span class="text1">'
    .$description.'</span></p>
    <p><span class="qtitle">Difficulty Level: </span><span class="text1">'
    .$difficulty.'</span></p>
    <p>
    <span class="qtitle">Requirements: </span><span class="text1">'
    .$requirements.'</span></p>

    <p>
    <span class="qtitle">Items Needed During Quest: </span><span class="text1">'
    .$items.'</span></p>
    <p>
    <span class="qtitle">Starting Location: </span><span class="text1">'
    .$location.'</span></p>
      <p><span class="qtitles">Quest Instructions:</span></p>'
    ;
      echo 
    list_steps($idtrue);
    echo 
    '<p>
    <div id="rewardwrap" style="display:none;"><span class="qtitle">Reward: </span><span class="text1">'
    .$reward.'</span></div></p>
      &nbsp;</td>
      </tr>
    </table></div> '
    ;

    Here's the switch:
    PHP Code:
        switch($_GET['flibble']) {
        
        case 
    'selectquest':
            
    selectquest();
            break;
        case 
    'questview':
            
    questview($_GET['id']);
            break;        
        default:
            
    selectquest();

    I didn't write the function, so it needs modification to work with the rewrite rule.

    Any help is greatly appreciated, if you need more information, please ask.

    Regards,
    Karl
    Last edited by -Karl-; 07-09-2010 at 03:48 AM.

  • #2
    Supreme Master coder! abduraooft's Avatar
    Join Date
    Mar 2007
    Location
    N/A
    Posts
    14,849
    Thanks
    160
    Thanked 2,223 Times in 2,210 Posts
    Blog Entries
    1
    www.mysite.com/quests works fine, the images load and so does the content.

    However, if I do something like

    www.mysite.com/quests/

    it fails to load the images or the content.

    I'm also trying to dynamically create a page.
    The short answer is, use absolute paths(starting with /) to refer all elements from clients side. See http://www.codingforums.com/showthre...167#post784167
    The Dream is not what you see in sleep; Dream is the thing which doesn't let you sleep. --(Dr. APJ. Abdul Kalam)

  • #3
    New Coder
    Join Date
    Nov 2009
    Posts
    39
    Thanks
    2
    Thanked 0 Times in 0 Posts
    That does nothing except make the images not work.

  • #4
    Supreme Master coder! abduraooft's Avatar
    Join Date
    Mar 2007
    Location
    N/A
    Posts
    14,849
    Thanks
    160
    Thanked 2,223 Times in 2,210 Posts
    Blog Entries
    1
    Then you might be doing something wrong! Can't say anything without seeing a link to your page.
    The Dream is not what you see in sleep; Dream is the thing which doesn't let you sleep. --(Dr. APJ. Abdul Kalam)

  • #5
    New Coder
    Join Date
    Nov 2009
    Posts
    39
    Thanks
    2
    Thanked 0 Times in 0 Posts
    http://www.runehints.com/rhnew/

    That's what I have so far, as you can see. /quests, /skills, etc work.

    Here's my index.php:
    PHP Code:
    <?php
    function HtmlOut($Str) {
        return 
    htmlentities($StrENT_QUOTES);
    }
    include (
    'tpl/header.tpl');

    if (isset(
    $_GET['page'])) {
        if (
    preg_match('/^[a-zA-Z0-9-\/]+$/D'$_GET['page'])) {
            
    $_GET['page'] = str_replace('/'''$_GET['page']);
            if (
    is_file('pages/'.$_GET['page'].'.php')) {
                
    $Page=$_GET['page'];
            } else {
                echo 
    '<div id="contenttitle">File Not Found</div>
                            <div class="news">
                            <h1>File not Found</h1>
                                  <p>Unfortunately but the file "<span>'
    .HtmlOut($_GET['page']).'</span>" could not be found.</p>
                                  <p>If you believe this is an error, please contact an administrator immediately.</p>
                            </div>'
    ;
            }
        } else {
            
    $Flash='File &quote;'.HtmlOut($_GET['page']).'&quote; not found.';
        }
    }
    if ((empty(
    $_GET['page'])) && (!file_exists('pages/'.$Page.'.php'))) {
        
    $Page 'index';
    }
    if (
    is_file('pages/'.$Page.'.php') && file_exists('pages/'.$Page.'.php')) {
    include(
    'pages/'.$Page.'.php');
    }

    include (
    'tpl/sidebar.tpl');
    include (
    'tpl/footer.tpl');

    ?>

  • #6
    Supreme Master coder! abduraooft's Avatar
    Join Date
    Mar 2007
    Location
    N/A
    Posts
    14,849
    Thanks
    160
    Thanked 2,223 Times in 2,210 Posts
    Blog Entries
    1
    I've mentioned about the changing "all the paths" in that link in my first post. That means, your link to CSS file should be
    Code:
    <link href="/rhnew/css/styles.css" type="text/css" rel="stylesheet">
    Making the above change will show you some progress.

    Then you have to change all paths to images in the above format, say
    Code:
    body{margin:0;padding:0;
    background: #000 url('./../images/bg-overall.jpg'); background-position: center top; background-repeat: no-repeat;font: 76% arial,sans-serif;text-align:center;}
    should be changed to
    Code:
    body{margin:0;padding:0;
    background: #000 url('/rhnew/images/bg-overall.jpg'); background-position: center top; background-repeat: no-repeat;font: 76% arial,sans-serif;text-align:center;}
    Similarly for all <img>, <script>, <a> tags.
    The Dream is not what you see in sleep; Dream is the thing which doesn't let you sleep. --(Dr. APJ. Abdul Kalam)

  • Users who have thanked abduraooft for this post:

    -Karl- (07-09-2010)

  • #7
    New Coder
    Join Date
    Nov 2009
    Posts
    39
    Thanks
    2
    Thanked 0 Times in 0 Posts
    Okay that's fine, the thing I can't get working now is the quests rewrite rule. To make www.mysite.com/quests/questname/id work correctly.


  •  

    Posting Permissions

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