正则表达式中的点(。)更改RewriteRule的返回?

时间:2017-04-19 08:16:17

标签: php .htaccess mod-rewrite

我的目标是从domain.com/app/public/index.php?route=news/test/action重定向到domain.com/news/test/action

我使用了以下正则表达式:

RewriteRule ^([A-Za-z0-9-/]*)$ app/public/index.php?route=$1 [NC]

当我致电domain.com/news/test时,这是有效的。

现在我还要考虑路由文件,所以我在正则表达式中包含点(。),如下所示:

RewriteRule ^([A-Za-z0-9-/.]*)$ app/public/index.php?route=$1 [NC]

现在,当我致电domain.com/news/test时,$ 1的输出不是news/test而是app/public/index.php

发生了什么事?

2 个答案:

答案 0 :(得分:0)

您使用了/.,这意味着/ or any symbol。如果要使用点,请使用\.

答案 1 :(得分:0)

感谢@arkascha,我发现答案是重写循环。

此代码解决了问题:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([A-Za-z0-9-/\.]*)$ app/public/index.php?route=$1 [NC]

谢谢!

编辑:我的解决方案似乎存在CSS文件等现有文件的问题。它还重定向了那些。一旦我有更好的方法,我会立即更新...