.htaccess问题,现有的.php文件和search.php

时间:2011-09-27 14:45:42

标签: regex .htaccess url-rewriting

我刚接触.htaccess用于格式良好的网址,我只是不确定我做得对。

我当前的.htaccess文件如下所示:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^search/(.*) search.php?query=$1 [L]
RewriteRule !\.(gif|jpg|ico|css|js|txt|xml|png|swf)$ index.php

我想要的是mysite.com/home/56/page-title转到index.php,我在那里过滤掉数字并加载正确的索引页面,这很好。

在此之前,我想检查网址是否指向search.php,如果是这样重定向到mysite.com/search/the-search-term,这也可以。

什么是无效的,如果我尝试访问一个特定的.php文件,请说mysite.com/control_panel.php - 它只需要我到index.php,但我认为以下行阻止了这种情况发生?< / p>

RewriteCond %{REQUEST_FILENAME} !-f

如果有人能向我解释那会很棒:)

谢谢!

1 个答案:

答案 0 :(得分:1)

1。规则顺序很重要

2。 RewriteCond指令仅适用于其后的ONE RewriteRule。如果需要对多个规则应用相同的条件,则必须多次写入或更改重写处理逻辑(可使用多种方法)。

试试这个:

RewriteEngine On

RewriteRule ^search/(.*) search.php?query=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(gif|jpg|ico|css|js|txt|xml|png|swf)$ index.php [L]