重写子目录/查询参数到根/查询参数

问题描述:

我需要重定向mysite.com/all-tags?tag=[tag]至mysite的/ [标签]重写子目录/查询参数到根/查询参数

在htaccess的,我有:

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

RewriteEngine叙述上,和现有卷起规则是:

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

这并不正常工作。任何人都有洞察力,这是不正确的?

感谢

可以使用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] 
+0

感谢 - 这工作在生产服务器上,而不是在localhost上(这很好)。一个问题 - 正在使用的标签是大写字母,转换为像mydomain.com/[Tag]这样的URI,而不是mydomain.com/[tag])。我知道强制使用小写字母的一般Apache规则,并且如果需要也可以重构标签,但强制小写规则是否可以限制在此规则集? –

+0

将URL转换为小写将需要Aapche配置更改以声明“RewriteMap”。你有没有访问Apache配置文件? – anubhava

+1

我这样做 - 但认为在重构可能时让服务器处理此处理是没有意义的。感谢你的协助! –