Regex .htaccess重写规则条件?
我正在尝试创建两个重写规则,但似乎无法让mod_rewrite玩得很好 我正在努力实现以下目标Regex .htaccess重写规则条件?,regex,apache,.htaccess,mod-rewrite,redirect,Regex,Apache,.htaccess,Mod Rewrite,Redirect,我正在尝试创建两个重写规则,但似乎无法让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 其中,$1是my/friendly/url,$2是100 我尝试了许多模式,
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
其中,$1
是my/friendly/url
,$2
是100
我尝试了许多模式,但都没有成功。我的.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]
您可以有如下规则:
# 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]
真是一种享受!谢谢!我注意到2次重写破坏了整个代码,但我想理解为什么,因为这些重写规则是正确的。主要问题是OP的第一个
重写规则
中使用的正则表达式。2. RewriteCond
仅适用于下一个RewriteRule
而不适用于所有RewriteRule
。我现在看到了第一个RewriteRule
的问题。分离的/
之间没有区别?。