2009-09-17 82 views
0

我有一个我想用mod_rewrite缩短的URL。使用.htaccess和mod_rewrite改善此网址

在它的最丑陋的形式,它看起来像:

/img.php?i=15&a=92 

理想的情况下它会看起来像:

/img/15/92 

的问题是有时候可能只是:

/img.php?i=15 

在哪该人将输入:

/img/15 

所以我想,我需要这样的mod_rewrite的:当两个变量在URL,而不仅仅是缩短版

RewriteRule ^/img/(.*)/(.*)$ /img.php?i=$1&a=$2 

其中我想象才会工作。

我该如何进行适用于两者的单一重写,或者如何在不取消对方的情况下制作2个?

回答

2

试试这个规则:

RewriteRule ^img/([0-9]+)(/([0-9]+))?$ img.php?i=$1&a=$3 

当在.htaccess文件中使用mod_rewrite,你需要删除从模式中每目录的路径前缀(在这种情况下,领先/)。因为mod_rewrite也会这样做,并在重写过程之后放回它。

+0

我不知道你如何从1美元到3美元没有2美元 - 但它的工作原理。 legend Gumbo – willdanceforfun 2009-09-17 22:07:02

+0

@cosmicbdog:第二组是包含第三组的可选一个'(...)?'。 – Gumbo 2009-09-17 22:44:08