Search code examples
php.htaccessrequest-uri

htaccess and php_self dont work in same page


So then I using php_self and press next button i go to index.php, but i want to stay in my clicked page.

So my .htaccess now looking this:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /svetaine/
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

My code in table pagination is here:

<h1>Skaitmeniniai fotoaparatai</h1>
<form method='get'>
<?php
//check if the starting row variable was passed in the URL or not
if (!isset($_GET['startrow']) or !is_numeric($_GET['startrow'])) {
 //we give the value of the starting row to 0 because nothing was found in URL
  $startrow = 0;
//otherwise we take the value from the URL
} else {
 $startrow = (int)$_GET['startrow'];
}
//this part goes after the checking of the $_GET var
$fetch = mysql_query("SELECT * FROM sfotoaparatai order by rand() LIMIT $startrow,   20")or
die(mysql_error());
 $num=Mysql_num_rows($fetch);
    if($num>0)
    {
    echo "<table border=2  >";
    echo "<tr><td>Prekes Pavadinimas</td><td>Kaina</td><td>Parduotuve</td>    <td>Nuoroda</td></tr>";
    for($i=0;$i<$num;$i++)
    {
    $row=mysql_fetch_row($fetch);
    echo "<tr>";
    echo"<td>$row[1]</td>";
    echo"<td>$row[2] LT</td>";
    echo"<td>$row[3]</td>";
    echo "<td><a href=\"{$row[4]}\"><img    src=\"".base_url()."images/parduotuve.png\" /></a></td>";
    echo"</tr>";
    }
    echo"</table>";
    }
 ///now this is the link..
  echo '<a href="'.$_SERVER['PHP_SELF'].'?startrow='.($startrow+5).'">Sekantis</a>';

  $prev = $startrow - 5;

 //only print a "Previous" link if a "Next" was clicked
 if ($prev >= 0)
echo '<a href="'.$_SERVER['PHP_SELF'].'?startrow='.$prev.'"> Buves</a>';
?>
</form>
</body>

then i click next table page my link change to localhost/svetaine/index.php?startrow=5, it should be localhost/svetaine/sfotoaparatai?startrow=5


Solution

  • Have your rules like this:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /svetaine/
    
    RewriteCond %{QUERY_STRING} (^|&)startrow=[0-9] [NC]
    RewriteRule ^ - [L]
    
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]
    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
    </IfModule>