Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex .htaccess重写规则条件?_Regex_Apache_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

Regex .htaccess重写规则条件?

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 我尝试了许多模式,

我正在尝试创建两个重写规则,但似乎无法让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

我尝试了许多模式,但都没有成功。我的
.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
的问题。分离的
/
之间没有区别?。