Apache .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 entryApache .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,什么样的条件/规则更有效?
对于.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]
。