两个不能在htaccess中工作的重写规则

时间:2017-01-15 10:14:50

标签: apache .htaccess mod-rewrite url-rewriting

这是我的.htaccess文件

RewriteCond %{REQUEST_FILENAME} !-f
<FilesMatch “.(ttf|otf|eot|woff)$”>
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin “domain.com”
</IfModule>
</FilesMatch>
Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteRule   ^[A-Za-z-]+/([A-Za-z0-9-]+)/?$  viewpost.php?id=$1   [QSA,NC,L]
RewriteRule   ^[A-Za-z-]+/([A-Za-z0-9-]+)/?$  category.php?id=$1   [QSA,NC,L]

除了第一个重写规则有效,第二个没有。

1 个答案:

答案 0 :(得分:0)

这是因为你在第一个RewriteRule的末尾使用了标志[L]。

  

[L]标志使mod_rewrite停止处理规则集。在   大多数情况下,这意味着如果规则匹配,则没有进一步的规则   将被处理。这对应于Perl中的最后一个命令,或   C中的break命令。使用此标志指示当前   应立即应用规则而不考虑进一步的规则。

Rewrite Flags上的文档。