.htaccess RewriteRule条件?

时间:2014-10-22 14:13:31

标签: regex apache .htaccess mod-rewrite redirect

我试图创建两个RewriteRules,但似乎无法让mod_rewrite发挥得很好。

我想要实现的是以下......

domain.com/my/friendly/url = domain.com/index.php?a=$1

这个很简单,但是我试图检查是否存在一个数字(任意长度)然后再添加为第二个请求参数。

例如

domain.com/my/friendly/url/100 = domain.com/index.php?a=$1&id=$2

$1my/friendly/url$2100

我尝试了很多模式而没有成功。我的.htaccess文件看起来像这样并且失败了。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)(\/[0-9]+)$ index.php?a=$1&id=$2 [L,QSA]
RewriteRule ^(.*)$ index.php?a=$1 [L,QSA]

1 个答案:

答案 0 :(得分:1)

您可以遵守以下规则:

# ignore all rules for real files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

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

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