我有以下文件:
/forums/faq.php
- http://www.domain.com/forums/faq.php
我想调用这个文件(通常以faq.php?faq = faqname的形式)来重写为:
/faq/faqname
- http://www.domain.com/faq/faqname
我一直在尝试以下.htaccess规则无济于事。在我的根.htaccess:
RewriteRule ^forums/faq.php?faq=(.*)$ faq/$1 [L,R=301]
RewriteRule ^faq$ faq/ [L,QSA,R=301]
在我的/forums/.htaccess上:
RewriteRule ^faq.php?faq=(.*)$ http://www.domain.com/faq/$1 [L,R=301]
我可以忽视这里真正明显的东西吗?我的语法是否关闭?
答案 0 :(得分:0)
您可以放弃/forums/
htaccess中的规则,规则优先于文档根目录中的规则。你在两个地方都不需要它们。
如果您的规则符合您的要求,您的规则就会导致重定向循环。
您无法与RewriteRule
中的查询字符串进行匹配,因此第一条规则与任何内容都不匹配。你真正想做的是与实际请求相匹配。
# redirect /forums/faq.php?faq=faqname to /faq/faqname
RewriteCond %{THE_REQUEST} \ /forums/faq\.php\?faq=([^&\ ]+)
RewriteRule ^forums/faq.php$ /faq/%1? [L,R=301]
然后你需要在内部改回来
RewriteRule ^faq/(.+)$ /forums/faq.php?faq=$1 [L,QSA]