重写子目录/查询参数到根/查询参数
问题描述:
我需要重定向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]
感谢 - 这工作在生产服务器上,而不是在localhost上(这很好)。一个问题 - 正在使用的标签是大写字母,转换为像mydomain.com/[Tag]这样的URI,而不是mydomain.com/[tag])。我知道强制使用小写字母的一般Apache规则,并且如果需要也可以重构标签,但强制小写规则是否可以限制在此规则集? –
将URL转换为小写将需要Aapche配置更改以声明“RewriteMap”。你有没有访问Apache配置文件? – anubhava
我这样做 - 但认为在重构可能时让服务器处理此处理是没有意义的。感谢你的协助! –