Hi there im not sure if this is php related but im wanting to know how can i get an htaccess file coming from a mysql database does anyone know if this is possible if it is how do i go about doing this?
the reason i am asking is i am wanting to work on a dynamic mod re-write using the mysql database i thought this would be a good way to do it.
so does anyone have any ideas on how to achieve this?
Your best bet would be to utilise something called a Front Controller, here’s a quick and dirty example.
.htaccess
# Turn on URL rewriting
RewriteEngine On
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule (.*) index.php?$0 [PT,L]
index.php
<?php
$sSlug = $_SERVER['QUERY_STRING'];
?>
So, given the URL [B]http://www.domain.com/view/blog/page/5[/B], $sSlug would become view/blog/page/5. You can now use this variable as you wish, search a database for a matching page, redirect etc…
Sure, perfectly possible. Just use the usual file manipulation functions(fwrite, fopen etc…).
I’m unsure what you are trying to achieve here, are you wanting to specify routes of some sort? Maybe with a little background we could suggest a more standard/best practice based solution?
mod_rewrite does support letting you use a seperate script or program to do the url translation. You can also specify for it to use a regular txt file to lookup the rewrite rules, or a dbm type file(optimized binary file).
Keep in mind that RewriteMaps need to be specified in server config.
You can USE them in .htaccess but the must be SPECIFIED in the config (e.g. apache2.conf, httpd.conf etc.)
Come on, you don’t really mean that do you? Don’t get me wrong, I’m all for a laugh. I even got married to convince myself I have a life away from my laptop and current favourite IDE.
Just because you could doesn’t mean you should - at least for all the reasons previously mentioned.
I’m still trying to figure out any scenario where you would need to rewrite the .htaccess on the fly, or even frequently enough that you would need to pull it from the database.
The reason it could be dangerous is if a hacker can trick your script into writing arbitrary values to the .htaccess file they can get redirects to other directories of your machine.
My own approach doesn’t even use .htaccess since mod_rewrite applied at the httpd.conf layer is 10 to 20 times faster than when applied in htaccess. Apache looks for the file and if it doesn’t find it then it hands off operational control to a PHP framework to resolve the request. The only thing that is unique to my approach is I’m doing it in httpd.conf. Drupal, Joomla et al do the same thing but at the .htaccess level since, like most php applications, they are of a ‘drop this in your public_html folder and be done’ approach.
dJango, in python, assigns itself as a directory handler in Apache, so all requests pass through this. This is a bit slower than letting Apache do it all, but not as slow as things would be if PHP handled all requests (which it isn’t designed to do - python being a compiled language is better equipped for such an approach).
In each of these approaches though the code given to Apache to follow is very small and never changes once set. With that in mind I did write an automation script that can change the httpd.conf values for the framework - but this script isn’t invokable from a web browser and must be invoked through ssh (and further using sudo), and second it is only invoked when I’m adding a new website project to the server, which might only occur once every couple weeks.
From a technical perspective it isn’t too difficult to do this in PHP. .htaccess (and httpd.conf for that matter) are plain text files. A PHP script that opens a connection to the database and parses what it finds into a text file is very easily done - but seriously consider why you’re wanting to do this because it appears to be (on the face of it) to be a very bad approach.
If you change your .htaccess based on user input, one malicious user will find a way to craft an entry that will let him invade your system, or at least bring your site down. Also remember that your site may be accessed while you are rewriting the .htaccess file, so you will probably have sporadic errors.
SilverBulletUK presented a much better solution: you re-route everything to an index.php, and there you analyze the URL. After that, you can include() whatever you want.