RewriteRule在两个不同文件的同一.htaccess中

时间:2016-09-26 08:47:42

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

我想制作一个重写规则,该规则适用于同一文件夹中包含的两个不同文件。

localhost/nameOfUser will be applied to index.php
localhost/nameOfUser?score=12 or localhost/nameOfUser/12 will be applied to post.php

我设法让第一个与

一起工作
RewriteEngine On
RewriteRule ^(css|fonts)($|/) - [L]
RewriteRule ^(php|avatars)($|/) - [L]
RewriteRule ^(user|post)($|/) - [L]
RewriteRule ^(.*)$ index.php?user=$1 [NC,QSA]

如果我添加

RewriteRule ^(.*)$ post.php?user=$1 [NC,QSA]

第二个开始工作,但第一个没有。

是否可以在同一个.htaccess文件中重写两个不同的文件?

1 个答案:

答案 0 :(得分:1)

尝试以下规则:

RewriteEngine On
RewriteRule ^(css|fonts|php|avatars|user|post)($|/) - [L]
RewriteRule ^([^/]+)$ index.php?user=$1 [NC,QSA,L]
RewriteRule ^([^/]+)/([^/]+)$ post.php?user=$1&score=$2 [NC,QSA,L]

但是,如果您希望nameOfUser?score=12有效,则需要将其修改为:

RewriteEngine On
RewriteRule ^(css|fonts|php|avatars|user|post)($|/) - [L]
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^([^/]+)$ /index.php?user=$1 [NC,QSA,L]
RewriteCond %{QUERY_STRING} ^score=(.+)$
RewriteRule ^([^/]+) /post.php?user=$1&score=%1 [NC,L]