Apache RewriteRule - 更多参数

时间:2014-02-03 10:05:25

标签: regex apache .htaccess mod-rewrite

我想知道,如何使用.htaccess(例如/?menu=first)正确地将地址转换为/first。 好的,实际上这已经与下面的代码一起工作了:

RewriteRule ^([A-Za-z0-9-_]+)/?$ index.php?menu=$1 [NC]

但是有一个问题,因为它可能会发生,一旦它只是url中的一个参数,另一个时间是两个甚至三个参数。像这样:

/?menu=first                               /first
/?menu=first&submenu=second                /first/second
/?menu=first&submenu=second&news=third     /first/second/third

这可以实现使用.htaccess吗?

1 个答案:

答案 0 :(得分:1)

对于较长的网址,您还需要另外两条规则:

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^([\w-]+)/?$ index.php?menu=$1 [L,QSA]

RewriteRule ^([\w-]+)/([\w-]+)/?$ index.php?menu=$1&submenu=$2 [L,QSA]

RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?menu=$1&submenu=$2&news=$3 [L,QSA]
  • 同样对于css / js更好地在你的css,js,图像文件而不是相对文件中使用绝对路径。这意味着您必须确保这些文件的路径以http://或斜杠/开头。
  • 您可以尝试在页面标题中添加:<base href="/" />