2013-04-09 39 views
1

我已经从我的工作有一个代码点火项目工作,所以我试图做到这一点了解了一些关于MVC:捕获其间网址的所有实例/ /但如果文件

之前: 的index.php somepage.php secondpage.php

所有这些文件有“包括(头),包括(页脚)等等...

相反,我要捕捉的用户是什么页面从url寻找 - >将它们重定向到索引,并且始终将页眉和页脚加载到该地方,唯一的变化就是内容。

所以我做了这个与我的htaccess:

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    Options +Indexes 
    RewriteEngine On 
    RewriteCond %{SCRIPT_FILENAME} !-d 
    RewriteCond %{SCRIPT_FILENAME} !-f 
    RewriteRule (.*)/(.*)/(.*)/(.*)/(.*)/(.*) index.php?page=$1&child=$2&grandchild=$3&cousin=$4&aunt=$5&uncle=$6 [NC,QSA,L] 
    RewriteRule (.*)/(.*)/(.*)/(.*)/(.*) index.php?page=$1&child=$2&grandchild=$3&cousin=$4&aunt=$5 [NC,QSA,L] 
    RewriteRule (.*)/(.*)/(.*)/(.*) index.php?page=$1&child=$2&grandchild=$3&cousin=$4 [NC,QSA,L] 
    RewriteRule (.*)/(.*)/(.*) index.php?page=$1&child=$2&grandchild=$3 [NC,QSA,L] 
    RewriteRule (.*)/(.*) index.php?page=$1&child=$2 [NC,QSA,L] 
    RewriteRule (.*^.css) index.php?page=$1 [NC,QSA,L] 
</IfModule> 

随着心态,如果它的工作原理它是一个开始..但它不工作。首先我注意到我的CSS没有加载..显然-f没有帮助,所以我添加了规则,但是/img/bg.png也不起作用。

我希望很明显我正在尝试捕获url中//之间的任何单词并将它们传递给索引作为参数。你们知道是否有任何智能重写规则,如果文件存在实际上忽略了重写?

+0

嗯这可能适用于不重写内部调用:http://stackoverflow.com/questions/11116087/url-rewriting-doesnt-rewrite-automatically我会试试看! :D – Alisso 2013-04-09 19:43:38

回答

0

我改变了我的逻辑。 我现在检测到什么页面,并将其余的保存到变量设置中, 这只适用于thr? *后如你所说:

最终目前的解决方案:

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    Options +Indexes 
    RewriteEngine On 
    RewriteCond %{SCRIPT_FILENAME} !-d 
    RewriteCond %{SCRIPT_FILENAME} !-f 
    RewriteRule ^(.*?)/(.*) index.php?page=$1&settings=$2 [QSA,L] 

    RewriteCond %{SCRIPT_FILENAME} !-d 
    RewriteCond %{SCRIPT_FILENAME} !-f 
    RewriteRule ^(.*) index.php?page=$1 [QSA,L] 
</IfModule> 
1

RewriteCond s的应用到下一个,在你的情况下,只有第一,RewriteRule。如果你想使用它的每一个重写规则,你必须重复它

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^(.*?)/(.*?)/(.*?)/(.*?)/(.*?)/(.*?) index.php?page=$1&child=$2&grandchild=$3&cousin=$4&aunt=$5&uncle=$6 [QSA,L] 

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^(.*?)/(.*?)/(.*?)/(.*?)/(.*) index.php?page=$1&child=$2&grandchild=$3&cousin=$4&aunt=$5 [QSA,L] 

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^(.*?)/(.*?)/(.*?)/(.*?) index.php?page=$1&child=$2&grandchild=$3&cousin=$4 [QSA,L] 
... 

这里不需要[NC]标志,因为该模式不包含任何字母字符。

我也修改了一下模式,使用^作为URL路径的开始和非贪婪版本.*?,这使捕获在第一个斜杠处停止。

+0

我不知道康达只申请“下一个规则”! – Alisso 2013-04-10 17:28:44

+0

?之后。*没有为我工作, – Alisso 2013-04-10 17:35:46

相关问题