windows下开启apache mod_rewrite 的方法
1、打开Apache2/conf/httpd.conf
搜索 LoadModule rewrite_module modules/mod_rewrite.so (Apache2是这个)
去掉前面的#
2、找到需要rewrite的Directory
把AllowOverride None 替换为 AllowOverride All
ps:
在 AllowOverride 设置为 None 时, .htaccess 文件将被完全忽略。当此指令设置为 All 时,所有具有 “.htaccess” 作用域的指令都允许出现在 .htaccess 文件中。
其他相关参数
AuthConfig
允许使用与认证授权相关的指令(AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, 等)。
FileInfo
允许使用控制文档类型的指令(DefaultType, ErrorDocument, ForceType,
LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter,
mod_mime中的 Add* 和 Remove* 指令等等)、控制文档元数据的指令(Header, RequestHeader,
SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain,
CookieStyle, CookieTracking, CookieName)、mod_rewrite中的指令(RewriteEngine,
RewriteOptions, RewriteBase, RewriteCond,
RewriteRule)和mod_actions中的Action指令。
Indexes
允许使用控制目录索引的指令(AddDescription, AddIcon, AddIconByEncoding,
AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName,
IndexIgnore, IndexOptions, ReadmeName, 等)。
Limit
允许使用控制主机访问的指令(Allow, Deny, Order)。
3.Directory的目录里加入.htaccess 文件
如下所示
<IfModule mod_rewrite.c>
RewriteEngine On
#这里写自己需要定义的RewriteRule 重写规则
</IfModule>
遇到一个小问题
之前用ci
用到了url重写
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
RewriteRule ^(.*).html $1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin
ErrorDocument 404 /index.php
</IfModule>
最近新加入了fck
因为fck中用到了很多html文件,但是按照上面的url重写规则,就指到ci的mvc系统里,导致fck出错
于是在fck的目录下
加入.htaccess文件,使之不用url重写
<IfModule mod_rewrite.c>
RewriteEngine OFF
</IfModule>
于是解决两者的冲突问题。