CodingForums.com

CodingForums.com (http://www.codingforums.com/index.php)
-   Apache configuration (http://www.codingforums.com/forumdisplay.php?f=69)
-   -   Rewrite rule, need some help. (http://www.codingforums.com/showthread.php?t=199663)

-Karl- 07-09-2010 03:37 AM

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

abduraooft 07-09-2010 08:09 AM

Quote:

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

-Karl- 07-09-2010 09:31 AM

That does nothing except make the images not work.

abduraooft 07-09-2010 09:38 AM

Then you might be doing something wrong! Can't say anything without seeing a link to your page.

-Karl- 07-09-2010 10:09 AM

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');

?>


abduraooft 07-09-2010 10:17 AM

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.

-Karl- 07-09-2010 10:24 AM

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.


All times are GMT +1. The time now is 04:30 PM.

Powered by vBulletin®
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.