Apache .htaccess从多个目录重定向到单个页面

Apache .htaccess从多个目录重定向到单个页面,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我有一个blog.php页面,应该从所有这些请求中重定向: www.site.com/blog#转到blog.php www.site.com/blog/id条目#转到blog.php?id=id条目 也有国际化版本,如法语版本: www.site.com/fr/blog*#到blog.php?lang=fr www.site.com/fr/blog/id of entry*#to blog.php?lang=fr&id=id of entry 对于.htaccess,什么样的条件/规则更有效?

我有一个blog.php页面,应该从所有这些请求中重定向:

www.site.com/blog#转到blog.php

www.site.com/blog/id条目#转到blog.php?id=id条目

也有国际化版本,如法语版本:

www.site.com/fr/blog*#到blog.php?lang=fr

www.site.com/fr/blog/id of entry*#to blog.php?lang=fr&id=id of entry


对于.htaccess,什么样的条件/规则更有效?我做了很多尝试,但最终还是绕圈而行,或者遵守了很多专门的规则:-)谢谢你的见解

通过
httpd.conf
启用mod_rewrite和.htaccess,然后将此代码放入
文档根目录下的
.htaccess

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^blog/([^/]+)/?$ /blog.php?id=$1 [L,NC,QSA]

RewriteRule ^blog/?$ /blog.php [L,NC,QSA]

RewriteRule ^([^/]+)/blog/([^/]+)/?$ /blog.php?lang=$1&id=$2 [L,NC,QSA]

RewriteRule ^([^/]+)/blog/?$ /blog.php?lang=$1 [L,NC,QSA]

我不是经常使用这个,所以有更好的方法,但这可以帮助你。规则是这样运作的。在
()
中,是与要匹配的变量相对应的变量。然后您可以通过
$1
等方式引用它们。例如,
news/local
会将它们重定向到文件
news local.php
,您可以使用相同的系统来匹配您得到的变量

RewriteRule ^([a-z]+)/([a-z]+)$ $1-$2.php

在进行测试时,让我添加一个相关问题。你会怎么做才能让它也在这里工作?(localhost/site/blog/id重定向到localhost/site/blog.php?id?id)@Juan:有这样一个规则:
RewriteRule^(site/blog)/([^/]+)/?$/$1.php?id=$2[L,NC,QSA]