alh Posted September 26, 2013 Share Posted September 26, 2013 I'm a complete newbie with mod-rewrite, but I've been programming php and javascript for many years. I have a client with a store that has 1,000+ products with more being added/changed daily. each product page is generated dynamically using php & mySQL and looks like this: http://www.mysite.com/store/?Page=18&Product_ID=3001424 needless to say I don't want to put in mod_rewrite rules for every product independently. I don't even know where to start with this. it looks as if the mod_rewrite in .htaccess doesn't get generated automatically. so how do sites like my clients or even bigger sites deal with this? ThnX Link to comment https://forums.phpfreaks.com/topic/282456-mod_rewrite-for-1000-products/ Share on other sites More sharing options...
Ch0cu3r Posted September 26, 2013 Share Posted September 26, 2013 You don't define a mod_rewrite rule for every product. You'd define your rule using regex. example rule RewriteRule ^product/([a-z0-9_\-]+)/?$ view_product_page.php?product=$1 The above rule will match urls like site.com/product/chocote-bar/ site.com/product/samsung_tvs/ ... etc mod_rewrite will map those urls to the following urls site.com/view_product_page.php?product=chocolate-bar site.com/view_product_page.php?product=samsung_tvs In view_product_page.php the superglobal variable $_GET['product'] will get the product from the url. Link to comment https://forums.phpfreaks.com/topic/282456-mod_rewrite-for-1000-products/#findComment-1451292 Share on other sites More sharing options...
alh Posted September 26, 2013 Author Share Posted September 26, 2013 Ch0cu3r - ThnX for responding... so I create the view_product_page.php page? what is in it? do I create a MySQL query that gives me the "chocolate-bar" string? it seems like there are 2 different places that the mod_rewrite has to act... 1) when someone clicks on a product link on the site and the URL that is displayed is the nice one like - site.com/view_product_page.php?product=chocolate-bar and 2) when someone gets that nice URL, clicks on it and gets taken to the correct product page is this correct? how does #2 happen? there is no /product/ folder? Page 18 is a page called productPage.php that's a page that does a MySQL query based on the passed ID and displays the formatted product information. Link to comment https://forums.phpfreaks.com/topic/282456-mod_rewrite-for-1000-products/#findComment-1451323 Share on other sites More sharing options...
Ch0cu3r Posted September 26, 2013 Share Posted September 26, 2013 mod_rewrite maps fake urls to ones that do exist (your existing urls). products/ is not a folder it is just a unique identifier that is captured by mod_rewrite. Whats follows after products/ is sent to view_product_page. It sets the query string variable product to that value. Create a file called test_page.php Now in add the following code to it <?php if(isset($_GET['message'])) echo 'Message is: ' . $_GET['message']; ?> <p> Try me out<br /> <a href="/test_page.php?message=hello+world">existing url</a><br /> <a href="/test/hello+world">clean url using mod_rewrite</a><br /> </p> Now in an .htaccess file (that is full name of the file) add this to it. make sure its in same folder as test_page.php RewriteEngine On RewriteRule ^test/([a-z0-9_\-\+]+)/?$ test_page.php?message=$1 [NC,L] Have a read of this article http://www.sitepoint.com/guide-url-rewriting/ it'll help you more than I can explain it. Link to comment https://forums.phpfreaks.com/topic/282456-mod_rewrite-for-1000-products/#findComment-1451325 Share on other sites More sharing options...
alh Posted September 27, 2013 Author Share Posted September 27, 2013 ThnX Link to comment https://forums.phpfreaks.com/topic/282456-mod_rewrite-for-1000-products/#findComment-1451383 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.