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,862
    Thanks
    160
    Thanked 2,223 Times in 2,210 Posts
    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,862
    Thanks
    160
    Thanked 2,223 Times in 2,210 Posts
    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,862
    Thanks
    160
    Thanked 2,223 Times in 2,210 Posts
    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
    •