Regex Apache将目录重写/重定向到querystring

Regex Apache将目录重写/重定向到querystring,regex,apache,mod-rewrite,Regex,Apache,Mod Rewrite,我计划学习mod_rewrite的细节,但我有一个问题我想在开始之前解决,我可能只是错过了一些小东西 我想强制将任何包含数字[0-9]{1,4}的目录重定向到一个带有该数字查询字符串的php文件 比如说 http://example.com/23 或 将重定向到: http://example.com?23 (该.php文件是我的索引) 目前我有以下几点: RewriteCond $/([0-9]{1,4})/^ RewriteRule $/([0-9]+)^ ?%1 [R] 它抛出一

我计划学习mod_rewrite的细节,但我有一个问题我想在开始之前解决,我可能只是错过了一些小东西

我想强制将任何包含数字
[0-9]{1,4}
的目录重定向到一个带有该数字查询字符串的php文件

比如说

http://example.com/23

将重定向到:

http://example.com?23
(该.php文件是我的索引)

目前我有以下几点:

RewriteCond  $/([0-9]{1,4})/^
RewriteRule  $/([0-9]+)^ ?%1 [R]
它抛出一个
500

谢谢您的时间。

试试看

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]{1,4})$ ?$1 [QSA,L]

“TWA只是一个语法错误,我已经修复了,结果不起作用。。。这也不起作用:
RewriteCond%{REQUEST\u FILENAME}-f RewriteCond%{REQUEST_FILENAME}-重写规则^/([0-9]+)$/?$1[QSA,L]
尝试使用
RewriteRule^([0-9]{1,4})$?$1[QSA,L]
似乎正在工作(URL不再是404,它们被发送到index.php),我只需检查查询字符串是否仍在通过php传递,我会标记为正确。是的,工作得很有魅力。想想我的第二次猜测只差几个字。。。谢谢。非常奇怪的例外。。。除了
1
的实例之外,其他一切都可以运行。我正在测试文件夹中的站点,比如说
http://domain.com/folder/
,然后单击链接
http://domain.com/folder/21
工作,重定向到
http://domain.com/folder/?21
,除了一个重定向到
http://domain.com/1/
而不是
http://domain.com/folder/?1
。。。非常奇怪…有一个名为
1
的文件夹或文件吗?没有。。。有一个
1.jpg
,但是所有数字都是一样的,所以它不会有什么区别。
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]{1,4})$ ?$1 [QSA,L]