我的目标是从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
。
发生了什么事?
答案 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文件等现有文件的问题。它还重定向了那些。一旦我有更好的方法,我会立即更新...