需要帮助.htaccess URL重写器

我正在尝试使用PHP / .htaccess做另一个SEO系统…

我需要应用以下规则:

  1. 必须捕捉所有不以扩展名结尾的url(www.foo.com – > catch | www.foo.com/catch-me – > catch | www.foo.com/dont-catch.me – >不要抓)。
  2. 必须捕捉以.php *(.php,.php4 …)结尾的所有URL(这是规则#1的例外)。
  3. 所有的规则只能应用于某些目录,而不能应用于其子目录(目前为/和/ framework)。
  4. htaccess必须在GET值中发送input的URL,这样我才能在PHP中使用它。

任何mod重写向导可以帮助我?

编辑:

确定阅读后提出的build议,我想出了这个,但我认为它卡在一个循环…任何人都可以帮忙吗?

<IfModule mod_rewrite.c> RewriteEngine On # 1 RewriteCond %{REQUEST_FILENAME} !\.[^/]+$ [OR] # 2 RewriteCond %{REQUEST_FILENAME} \.php.*$ # 4 RewriteRule ^(.*)$ http://localhost/seo-urls/seo-urls-mapper.php%3Frequested=$1?%{QUERY_STRING} </IfModule> 

因为我想在我的圣诞假期期间完成这个,所以我要添加赏金:)感谢您的帮助和节日快乐!

试试这个作为一个起点:

 RewriteEngine On RewriteCond %{QUERY_STRING} !^uri RewriteCond %{REQUEST_URI} !\.(.*) RewriteCond %{REQUEST_URI} !^/(framework|restricted)/ RewriteRule .* /index.php?uri=%{REQUEST_URI} [L,QSA] RewriteCond %{QUERY_STRING} !^uri RewriteCond %{REQUEST_URI} \.php.?$ RewriteRule .* /index.php?uri=%{REQUEST_URI} [L,QSA] 

第一个规则集:

  1. 如果设置了uri GET参数,则不要运行此规则(否则,在追加uri参数之后,redirect到目标脚本时会出现一个循环)
  2. 如果URI包含一个. 然后跳过这个规则集(你可能想为特定的扩展创build一个更具体的规则,但是这个工作)
  3. 如果URI位于受限目录下,则跳过此规则集
  4. redirect到index.php (您可能需要更改目标)并设置uri GET参数

第二个规则集:

  1. 如果设置了uri参数,则跳过此规则集以防止出现循环
  2. 如果所请求的URI以.php.php4或类似方式结束,则继续( .php123 不会被redirect)
  3. redirect到index.php (您可能需要更改目标)并设置uri GET参数

它不需要一个“向导”把mod_rewrite规则放在一起 – 花一些时间在你自己的实验上,阅读jscott推荐的指南。

如果你需要很好的解释,那么在这里问你所有的理论types的问题(而不是实际types的问题,好像回答者是众包你的项目而不是进一步知识)。