RewriteBase: only valid in per-directory config files 解答:
2013-01-01 23:43
1881 查看
呵呵,要实现伪静态必须开启Apache的重写模块,首先要修改http.conf文件,将
#LoadModule rewrite_module modules/mod_rewrite
前面的#去掉就可以了。
然后是针对网站做重写规则,不过这里有两种方法,我来给大家介绍一下^_^ (别丢砖啊!)
直接修改虚拟主机的配置,比如 PHP代码
<VirtualHost 221.130.187.81:80>
**********
DocumentRoot /var/www/html/
ServerName tinico.cn
ServerAlias www.tinico.cn
**********
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/(search|reg|login|index|links)\.html$ $1/index.php?action=$2
RewriteRule ^(.*)/(index)-([0-9]+)\.html$ $1/index.php?action=$2&page=$3
</IfModule>
</VirtualHost>
其中*号部分省略的内容不在本文讨论范围之内。那么相信懂一点正则表达式规则的朋友已经能很明显的看出写法了。红色部分的$N表示对应于前面匹配规则中的 匹配项,^(.*)/表示的是任意字符,也就是域名了嘛,呵呵,当然你要明确地写出域名也是可以滴!
第二种方法就是写.htaccess文件了,主要是一些朋友没有服务器的管理权限,比如使用虚拟主机的朋友们。但是前提是必须服务器要支持读取.htaccess文件。要让服务器支持的话必须修改http.conf文件,如下 PHP代码
<Directory "/var/www/html/">
Options -Indexes FollowSymLinks
AllowOverride all
</Directory>
<VirtualHost *.*.*.*>
*******
DocumentRoot /var/www/html/
ServerName tinico.cn
ServerAlias www.tinico.cn
*******
</VirtualHost>
重点就是针对某个目录设置AllowOverride属性,当然,我这里为了简便,直接全部开启,也就是上面代码中的AllowOverride all 具体要根据所需权限合适的选择开放的程度,要谈得更详细,请上Google搜索,呵呵这个不适本文讨论的重点。开放了复写服务器配置的功能之后就可以在网 站的根目录下创建一个.htaccess文件了,具体内容如下 PHP代码
RewriteEngine On
RewriteBase /
RewriteRule ^show-([0-9]+)-([0-9]+)\.html$ index.php?action=show&id=$1&page=$2
******
当然,规则和第一种方法是一样的,不过这里可以使用RewriteBase /来设置重写规则的适应范围为当前目录下。那么之后的重写规则就不必像第一种方法那样设置^(.*)/了,那么为什么我在第一种方法中不这样写呢?呵呵因 为第一种方法不能这么写,要是这样写了,apache会告诉你RewriteBase: only valid in per-directory config files,意思就是仅在每个文件夹下的配置文件中使用。
好了,配置完了以后别忘记重起一下apache让配置生效!
像这样配置完了以后你不必再考虑如何生成静态页面了,或者不必每次更新文章之后都要考虑是不是全部页面都重新生成了啊,这对于中小型网站特别实用,当然,大型网站还是想想办法全部生成静态吧,毕竟伪静态要消耗那么一点点服务器的资源,呵呵。
#LoadModule rewrite_module modules/mod_rewrite
前面的#去掉就可以了。
然后是针对网站做重写规则,不过这里有两种方法,我来给大家介绍一下^_^ (别丢砖啊!)
直接修改虚拟主机的配置,比如 PHP代码
<VirtualHost 221.130.187.81:80>
**********
DocumentRoot /var/www/html/
ServerName tinico.cn
ServerAlias www.tinico.cn
**********
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/(search|reg|login|index|links)\.html$ $1/index.php?action=$2
RewriteRule ^(.*)/(index)-([0-9]+)\.html$ $1/index.php?action=$2&page=$3
</IfModule>
</VirtualHost>
其中*号部分省略的内容不在本文讨论范围之内。那么相信懂一点正则表达式规则的朋友已经能很明显的看出写法了。红色部分的$N表示对应于前面匹配规则中的 匹配项,^(.*)/表示的是任意字符,也就是域名了嘛,呵呵,当然你要明确地写出域名也是可以滴!
第二种方法就是写.htaccess文件了,主要是一些朋友没有服务器的管理权限,比如使用虚拟主机的朋友们。但是前提是必须服务器要支持读取.htaccess文件。要让服务器支持的话必须修改http.conf文件,如下 PHP代码
<Directory "/var/www/html/">
Options -Indexes FollowSymLinks
AllowOverride all
</Directory>
<VirtualHost *.*.*.*>
*******
DocumentRoot /var/www/html/
ServerName tinico.cn
ServerAlias www.tinico.cn
*******
</VirtualHost>
重点就是针对某个目录设置AllowOverride属性,当然,我这里为了简便,直接全部开启,也就是上面代码中的AllowOverride all 具体要根据所需权限合适的选择开放的程度,要谈得更详细,请上Google搜索,呵呵这个不适本文讨论的重点。开放了复写服务器配置的功能之后就可以在网 站的根目录下创建一个.htaccess文件了,具体内容如下 PHP代码
RewriteEngine On
RewriteBase /
RewriteRule ^show-([0-9]+)-([0-9]+)\.html$ index.php?action=show&id=$1&page=$2
******
当然,规则和第一种方法是一样的,不过这里可以使用RewriteBase /来设置重写规则的适应范围为当前目录下。那么之后的重写规则就不必像第一种方法那样设置^(.*)/了,那么为什么我在第一种方法中不这样写呢?呵呵因 为第一种方法不能这么写,要是这样写了,apache会告诉你RewriteBase: only valid in per-directory config files,意思就是仅在每个文件夹下的配置文件中使用。
好了,配置完了以后别忘记重起一下apache让配置生效!
像这样配置完了以后你不必再考虑如何生成静态页面了,或者不必每次更新文章之后都要考虑是不是全部页面都重新生成了啊,这对于中小型网站特别实用,当然,大型网站还是想想办法全部生成静态吧,毕竟伪静态要消耗那么一点点服务器的资源,呵呵。
相关文章推荐
- Keep the number of files in your /app_code directory small
- How do I list the files in a directory?
- VS 2005 Intellisense in web.config files
- Invalid temp directory in chart handler configuration [c:\TempImageFiles\]解决方法
- (ZT)Change default Program Files installation directory location in Windows
- Error starting static Resources java.lang.IllegalArgumentException: Document base D:\Program Files\apache-tomcat-xxx\webapps\xxx does not exist or is not a readable directory
- Open multiple excel files in WebBrowser, only the last one gets activated
- Invalid temp directory in chart handler configuration [c:\TempImageFiles\]
- Invalid temp directory in chart handler configuration [c:\TempImageFiles\]
- python delete only files in dir_Linux DB2 Java Python PHP Code Snippets_百度空间
- ftp服务器登录bad bool value in config file for: anon_world_readable_only错误解决
- 今天运行MATLAB,由于处理文件太多出现:Too many files open; check that FILES = 20 in your CONFIG.SYS file
- Listing only directory using ls in bash
- Too many files open; check that FILES = 20 in your CONFIG.SYS file 解决方案
- Working with Configuration Files (app.config) in C++/CLI
- DataDir and DirectoryFactory in SolrConfig
- IMPORTANT: 2 config files in '/etc' need updating
- Number of files in each directory
- MySQL5.7 启动报错:initialize specified but the data directory has files in it. Aborting.
- What is the maximum number of files allowed in a HDFS directory?