如何使用mod_rewrite清除输入内容?

时间:2019-10-22 06:28:05

标签: regex apache mod-rewrite

我正在设置一个apache虚拟主机,并且希望它将所有请求重定向到index.php,如果与特定模式匹配,则将原始URL作为参数传递。

考虑模式是(无引号的)“ PaTTern [0-9]”,这是我尝试过的:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(PaTTern[0-9]).*$ /index.php?$1 [NC,L]
RewriteRule ^(.*)$ /index.php [NC,L]

我得到的是Error500。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

最后一行很可能导致重写循环(因为它是无条件的)。 由于您不希望在请求已经发送到/index.php的情况下进行任何重写,因此添加另一个条件:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(PaTTern[0-9]).*$ /index.php?$1 [NC,L]
RewriteCond %{REQUEST_URI} !^/index.php$
RewriteRule ^(.*)$ /index.php [NC,L]