0

我有一个看起来像这样的 .htaccess

RewriteEngine On
RewriteCond %{REQUEST_URI} !static/(.*)\.
RewriteRule ^(.*)$ index.php?controller=$1 [QSA]

它工作正常。/static 文件夹请求保持不变,而其他执行 index.php 文件。但现在我必须添加另一条规则。当用户导航到 /action/something 时,应该执行 /actions/something.php。但是当我添加以下行时

RewriteRule ^action/(.*)$ actions/$1.php [QSA]

它会中断对静态文件夹的请求。

4

1 回答 1

1

没有理由,为什么它应该打破static,除非你在之后写了新规则RewriteCond。但是,您应该做什么,重写为绝对 URL

RewriteEngine On
RewriteCond %{REQUEST_URI} !static/(.*)\.
RewriteRule ^(.*)$ /index.php?controller=$1 [QSA]
RewriteRule ^action/(.*)$ /actions/$1.php

RewriteCond长相不一般。除非有理由重写不带点的静态页面.,否则您应该RewriteCond

RewriteCond %{REQUEST_URI} !static/

更新

为了防止无限重写,您必须添加另一个排除条件

RewriteCond %{REQUEST_URI} !^/index\.php$

action必须排除在外

RewriteCond %{REQUEST_URI} !/actions?/

所有放在一起给出

RewriteEngine On
RewriteCond %{REQUEST_URI} !/static/
RewriteCond %{REQUEST_URI} !/actions?/
RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteRule ^(.*)$ /index.php?controller=$1 [QSA]
RewriteRule ^action/(.*)$ /actions/$1.php
于 2013-03-27T22:37:01.177 回答