mod_rewrite is a very powerful function of Apache, which can implement pseudo-static pages. Below I will explain in detail how to use it
1. Check whether Apache supports mod_rewrite
Check the environment configuration through the phpinfo() function provided by php, and use Ctrl+F to find "Loaded Modules", which lists all modules that have been opened by apache2handler. If "mod_rewrite" is included, it is already supported and is no longer Need to continue setting up.
If "mod_rewrite" is not turned on, open the httpd.conf file under your apache installation directory "/apache/conf/", find "LoadModule rewrite_module" through Ctrl+F, and delete the "#" in front of it. .
If it is not found, go to the "LoadModule" area, add "LoadModule rewrite_module, modules/mod_rewrite.so" in the last line (required to be an exclusive line), and then restart the apache server.
2. Let the apache server support .htaccess
How to make your local APACHE server support ".htaccess"? In fact, you can make APACHE support .htaccess by simply modifying apache's httpd.conf settings. Open the httpd.conf file (where? In the CONF directory of the APACHE directory),
After opening it with a text editor, search for
changed to
That’s it.
3. Create .htaccess file
There is 1 easiest way to create a .htaccess file:
Open it with Notepad, click File – Save As, enter ".htaccess" in the file name window, pay attention to the entire green part,
That is, include English quotation marks, and then click Save.
4.rewrite rule learning
After we create a new .htaccess file, we write the following content in it:
RewriteEngine on #rewriteengine is the rewrite engine switch on to turn on off to turn off
RewriteRule ([0-9]{1,})index.php?id=1
Let me explain RewriteRule: RewriteRule is a rewriting rule that supports regular expressions. The above ([0-9]{1,}) refers to the number
It is composed of words and is the end mark, indicating that it ends with a number! Okay, now we can implement a pseudo-static page. Write the following rules: RewriteEngineonRewriteRule([a−zA−Z]1,)−([0−9]1,).htmlindex.php?action=1&id=2
([a-zA-Z]{1,})-([0-9]{1,}).html is the rule, index.php?action=1&id=2 is the format to be replaced, 1 represents the
One bracket matches the value, 2 represents the second one, and so on! ! We write a PHP script for processing: index.phpPHP code echo ‘Your Action is: ′._GET['action'];
echo ‘
';
echo 'Your ID is:' . $_GET['id'];
?>
Okay, let’s type in the browser now:
localhost/page-18.html
The output is:
Your Action is: page
Your ID is: 18
++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++
Check apache's httpd.conf and there is no LoadModule rewrite_module modules/mod_rewrite.so line. You need to generate this module manually. The method is as follows:
The apache source package path is: /ftp/httpd2.2
apache installation path:/usr/local/apache/
1. Add mod_rewrite module
If there are no errors, a mod_rewrite.so file should be compiled in your apache's modules directory (/usr/local/apache/modules).
Edit the httpd.conf file and confirm that httpd.conf already contains the loading statement of mod_rewrite.so, as follows:
LoadModule mod_rewrite_module modules/mod_rewrite.so
2. Restart apache
1. If the following error occurs:
httpd: Syntax error on line 54 of /usr/local/apache/conf/httpd.conf: Can't locate API module structure `mod_rewrite_module' in file /usr/local/apache/modules/mod_rewrite.so: / usr/local/apache/modules/mod_rewrite.so: undefined symbol: mod_rewrite_module
Need
LoadModule mod_rewrite_module modules/mod_rewrite.so
changed to
LoadModule rewrite_module modules/mod_rewrite.so
2. If the following error occurs
httpd: Syntax error on line 54 of /usr/local/apache/conf/httpd.conf: module rewrite_module is built-in and can't be loaded
indicates that the module is built-in and does not need to be transferred in. Comment out
#LoadModule rewrite_module modules/mod_rewrite.so
3. Enable url rewriting for a virtual site
1. Edit httpd-vhost.conf and add:
to the corresponding site tag.i.e.:
4. Save the rewriting rules for the site to the root directory of the site, with the file name “.htaccess”
5. Restart apache