htaccess 多参数重写规则

Posted

技术标签:

【中文标题】htaccess 多参数重写规则【英文标题】:htaccess multiple parameters rewrite rule 【发布时间】:2013-12-26 10:25:54 【问题描述】:

我知道这个问题被问多了,但找不到任何适合我的问题。

我目前正在创建一个网站,我的网址是这样的:

www.foo.com/ 或 www.foo.com/index.php。 它们可以采用 1、2 或三个不同的参数,例如

www.foo.com/index.php?page=Home&lang=en&article=1

我想要的是一个像

这样的网址
   www.foo.com/Home/

or www.foo.com/en/Home

or www.foo.com/Article/1

or www.foo.com/en/Article/1

page参数是必须的,其他两个不是.. 我无法为我工作...任何帮助将不胜感激

非常感谢!

【问题讨论】:

【参考方案1】:

最好有单独的干净规则。将此代码放入您的 DOCUMENT_ROOT/.htaccess 文件中:

RewriteEngine On

RewriteRule ^index\.php$ - [L]

RewriteRule ^([^/]+)/?$ /index.php?page=$1 [L,QSA]

RewriteRule ^([a-z]2)/([^/]+)/?$ /index.php?page=$2&lang=$1 [L,QSA]

RewriteRule ^([a-z]2)/([^/]+)/([0-9]+)/?$ /index.php?page=$2&lang=$1&article=$3 [L,QSA]

RewriteRule ^([^/]+)/([0-9]+)/?$ /index.php?page=$1&article=$2 [L,QSA]

【讨论】:

在哪里可以了解有关这些 RewriteRules 的更多信息?我搜索了,但我没有找到很多资源。 @AvinashPatil: askapache.com/htaccess 有很好的教程。【参考方案2】:

试试这样的

RewriteRule ^([a-z0-9_-]+)/([a-z0-9_-]+)/([a-z0-9_-]+)\.html$           index.php?param1=$1&param2=$2&param3=$3

【讨论】:

我收到一个 500 内部错误,对不起,我对 htaccess 文件非常不满意 htaccess 文件中可能有错误。请粘贴您的 htaccess 文件以便我查看

以上是关于htaccess 多参数重写规则的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess使用无限参数重写规则

多存储视图的htaccess重写规则

。htaccess重写条件/规则并隐藏url参数

带有可选参数的nginx和htaccess重写规则

htaccess重写规则,带有unicode字母的参数

.htaccess 多 URL 重写