冗余的Apache RewriteRules,有没有办法缩短它们?

时间:2015-07-07 03:13:40

标签: php apache .htaccess mod-rewrite url-rewriting

我觉得我的Rewriterules有点多余。有没有办法缩短以下htaccess代码,进入一行?我认为它会在某个地方使用*,但我无法弄明白xD

RewriteRule ^([^/\.]+)?$ index.php?year=$1 [L]

RewriteRule ^([^/\.]+)/?$ index.php?year=$1 [L]

RewriteRule ^([^/\.]+)/([^/\.]+)?$ index.php?year=$1&month=$2[L]

RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?year=$1&month=$2[L]

RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)?$ index.php?year=$1&month=$2&day=$3[L]

RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ index.php?year=$1&month=$2&day=$3[L]

RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)?$ index.php?year=$1&month=$2&day=$3&post=$4[L]

RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ index.php?year=$1&month=$2&day=$3&post=$4[L]

RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)?$ index.php?year=$1&month=$2&day=$3&post=$4&action=$5 [L]

RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ index.php?year=$1&month=$2&day=$3&post=$4&action=$5 [L]

谢谢!

目前,php脚本检查是否设置了每个GET参数,并且根据可用的参数,它执行不同的任务。我的PHP代码运行完美,没问题,但我只是想知道是否有办法缩短上面的apache规则。我也意识到这种解析GET参数的方式可能会产生很多漏洞,所以我很感激任何建议或反馈! :)非常感谢^ _ ^

1 个答案:

答案 0 :(得分:1)

你想要一切都转到index.php?

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /

RewriteRule . index.php$1 [L,NC]
</IfModule>