rana
rana

Reputation: 1

How can I make RewriteRule in .htaccess working?

I have given a RewriteRule rule in .htaccess file as below but i am not getting the result.

I have given below RewriteRule in .htaccess file. but not getting any result.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?/$1 [L]

#for nice url
RewriteRule ^blog-([0-9a-zA-Z]+) blog?page=$1 [NC,L]

Upvotes: 0

Views: 49

Answers (2)

Erick ls
Erick ls

Reputation: 184

Try this:

# Turn On Mod Rewrite
RewriteEngine On
# Rewrite Condition only if is not a file
RewriteCond %{REQUEST_FILENAME} !-f
# Rewrite Condition only if is not a directory
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite Rule to friendly URL'S
# QSA = QueryString Appended 
# L = means if the rule matches, don't process any more RewriteRules below this one
# $1 = query string to pass
RewriteRule ^(.*)$ index.php?page=$1 [QSA,L]

Then in your index.php file you can catch the $_GET['page'] and assign to your php file... if income more than one param blog-page-1 you can use an explode('-', $_GET['page']) to look inside and assing to other php file... example:

index.php

<?php
  if (isset($_GET['page'])) {
    $route = explode('-', $_GET['page']);
    if (isset($route[0]) && $route[0] == 'home') {
      // Just an example for other pages
      include 'home.php';
    } elseif (isset($route[0]) && $route[0] == 'category') {
      // Just an example for other pages
      include 'category.php';
    } elseif (isset($route[0]) && $route[0] == 'blog') {
      // blog page
      include 'blog.php';
    } else {
      // Error404 page
      include 'error404.php';
    }
  } else {
    include 'home.php';
  }
  ?>

blog.php

<?php

if (!isset($route[1])) {
  echo "You're in main blog";
} else {
  if ($route[1] == 'page' && (isset($route[2]) && is_numeric($route[2]))) {
    echo sprintf("You're inside the page %d", $route[2]);
  } else {
    include 'error404.php';
  }
}

Upvotes: 1

Adel Tube
Adel Tube

Reputation: 54

Try this:

RewriteRule "/blog-page-3" "/blog?page=3" [R,L]

Upvotes: 0

Related Questions