【问题标题】:RewriteRule in same .htaccess on two different filesRewriteRule 在同一个 .htaccess 中对两个不同的文件
【发布时间】:2017-02-03 12:46:12
【问题描述】:

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

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 文件中的两个不同文件进行重写吗?

【问题讨论】:

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


    【解决方案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]
    

    【讨论】:

    • 在 localhost/user/score 上不显示 css。只是纯文本。
    • @Mirakurun 更新您的 HTML 以包含 <base href="/"> 标记。它应该出现在 <head> 标记的开头。
    猜你喜欢
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 2015-03-18
    • 2018-11-25
    相关资源
    最近更新 更多