Reputation: 1
I have given a RewriteRule rule in .htaccess file as below but i am not getting the result.
example.com/blog?page=3
example.com/blog-page-3
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
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