Question

I'm building an online shop and I'm trying to redirect every shop subfolder to the standard shop.php page displaying the results filtered by the url path as a category.

the structure is mydomain.com/shop/category where category is a field stored on the database.

I use the following php code for filtering the results:

$url = isset($_GET["url"]) ? $_GET["url"] : false;

if (!$url)
    $where_products = "WHERE 1";
else
    $where_products = "WHERE c.url = '$url'";

/* list products filtered by where clause */ 
$sql_products = "SELECT p.name FROM `product` p INNER JOIN `category` c ON p.id_category = c.id $where_products LIMIT 0,80";

now I have the following .htaccess file for redirecting the subfolder to the correct url variable:

Options +FollowSymlinks
RewriteEngine On

RewriteRule ^shop/([^/\.]+)/?$ shop.php?url=$1 [L]

now everything works fine, but when I try to show all products using mydomain.com/shop/ I get the follwing error message

/shop/ was not found on this server

what can I do on the .htaccess file to redirect correctly all products when no subfolder is called?

Was it helpful?

Solution

Tweak your regex to support 0 or more characters instead of 1 or more characters.

Try this rule:

Options +FollowSymlinks
RewriteEngine On

RewriteRule ^shop/([^/.]*)/?$ /shop.php?url=$1 [L]
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top