好的,我有这个mod重写(经过多次挖掘后获得:http://www.dynamicdrive.com/forums/showthread.php?51923-Pretty-URLs-with-basic-mod_rewrite-and-powerful-options-in-PHP):
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/loader.php$
RewriteCond %{REQUEST_URI} !^/loader.php/
RewriteRule ^(.*)$ loader.php/$1?%{QUERY_STRING} [L]
它将所有流量重定向到我服务器的公共webroot中的loader.php。然后加载器相应地加载相应的php文件,非常标准的东西。
<?php
//load the definitions and functions
require_once '../www_private/functions/functions.php';
//If the user is looking for the index then the request will have been to a directory, add index.php accordingly
if ( is_dir(WEBROOT.$_SERVER['REQUEST_URI']) )
{
//check for a leading slash
if ( substr($_SERVER['REQUEST_URI'], -1 == '/') )
{
$_SERVER['REQUEST_URI'] .= '/';
}
$_SERVER['REQUEST_URI'] .= 'index.php';
}
//Now attempt to load the requested file.
require WEBROOT.$_SERVER['REQUEST_URI'];
?>
唯一的问题是它还会重定向css js和图像文件,导致一堆致命的错误......
有谁知道如何更改mod重写以允许非php文件跳过此重定向?
或//
我会更好地在images,css和js目录中添加另一个.htaccess文件来忽略父.htaccess吗?
答案 0 :(得分:1)
尝试仅包含.php文件,如下所示:
RewriteEngine On
RewriteBase /
$ Add this line
RewriteCond %{REQUEST_URI} /\w+\.php
# Prevent loop
RewriteCond %{REQUEST_URI} !/loader\.php
RewriteRule ^(.*)$ loader.php/$1?%{QUERY_STRING} [L]
答案 1 :(得分:0)
通过向主.htacecss添加新规则
RewriteCond%{REQUEST_URI}!(gif | jpg | png | css | html | js)$
这只是添加了一个必须匹配的条件:如果文件扩展名不是其中任何一个......由于图像失败,重写规则将不会应用于它。