.htaccess 根据url的第一部分重写COND无效
我正试着重写一些东西,但没用。这是我的密码:.htaccess 根据url的第一部分重写COND无效,.htaccess,rewrite,.htaccess,Rewrite,我正试着重写一些东西,但没用。这是我的密码: RewriteCond %{REQUEST_URI} !^(static/|server/|internal.php).*$ RewriteRule ^(.*)$ /internal.php?request=$1 [L] 我试图将所有内容重定向到/internal.php?request=blabla,除了internal.php本身,还有两个名为static和server的文件夹中的内容,因为这两个文件夹都有图像等等 比如说,, /hello
RewriteCond %{REQUEST_URI} !^(static/|server/|internal.php).*$
RewriteRule ^(.*)$ /internal.php?request=$1 [L]
我试图将所有内容重定向到/internal.php?request=blabla
,除了internal.php本身,还有两个名为static和server的文件夹中的内容,因为这两个文件夹都有图像等等
比如说,,
/hello/world
=>/internal.php?请求=hello/world/
/static/a/b/c/a.jpg
=>/static/a/b/c/a.jpg
未更改
但是代码不起作用,RewriteCond似乎无法限制internal.php和这两个文件夹的重写。现在的情况是,所有内容都将重写为internal.php,internal.php将再次被重写为internal.php。最后给我一个500后的无限循环。我不希望有任何重写发生。怎么了?在请求URI表达式中缺少一个前导的
/
,您还应该在internal.php
中转义点,以便它实际匹配一个点而不是每个字符:
RewriteCond %{REQUEST_URI} !^/(static/|server/|internal\.php).*$
RewriteRule ^(.*)$ /internal.php?request=$1 [L]
请注意,如果您希望避免添加其他条件,例如,可以添加另一个条件,则这也将重写省略尾部斜杠的/static
和/server
:
RewriteCond %{REQUEST_URI} !^/(static|server)$
RewriteCond %{REQUEST_URI} !^/(static/|server/|internal\.php).*$
很难把它放在一个表达式中应该是可能的,但是我对正则表达式没有太多经验,所以我很确定这不是最优雅的方式:
RewriteCond %{REQUEST_URI} !^/(((static|server)(/.*)?)|(internal\.php.*))$