将subdir / query param重写为root / query param

时间:2016-08-16 21:18:21

标签: .htaccess mod-rewrite url-rewriting

我需要将mysite.com/all-tags?tag=[tag]重定向到mysite / [tag]

在htaccess中,我有:

RewriteCond %{QUERY_STRING} ^tag=(.*)$ [NC]
RewriteRule ^/all-tags$ /%1 [NC,L,R=301]

RewriteEngine已启用,现有的FURL规则为:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

这不能正常工作。任何人都可以了解这是不正确的?

由于

1 个答案:

答案 0 :(得分:1)

您可以使用example.com/tag/[tag]代替example.com/[tag],因为您已经拥有处理所有非文件,非目录的前端控制器index.php

RewriteEngine On

RewriteCond %{THE_REQUEST} /all-tags?\?tag=([^\s&]+) [NC]
RewriteRule ^ /tag/%1? [R=301,L,NE]

RewriteRule ^tag/(.+)$ all-tags?tag=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]