htaccess 将所有文件重写为 index.php

htaccess 将所有文件重写为 index.php

我需要将所有 URL(甚至 .js、.css、图像等)重写为 index.php

我试过了

RewriteEngine On
RewriteCond %{REQUEST_FILENAME}  -f [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,QSA]

但它似乎不适用于 css 和图像

答案1

RewriteCond %{REQUEST_FILENAME}  -f [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,QSA]

有两个条件,一个检查请求是否映射到文件,另一个检查它是否不映射到文件,这毫无意义。但是,这很可能产生重写循环。您需要确保不会将重写的请求重写为index.php。换句话说,index.php从重写中排除。

例如,如果你想重写一切那么您只需要一个指令:

RewriteRule !index\.php$ index.php [L]

这表明对于每个请求不是!前缀)将index.php其重写为index.php

不需要捕获子模式(即(.*)在原始图案),因为这似乎没有被你的脚本使用。(?)也不需要标志,QSA因为查询字符串附加到了替代默认情况下(尽管我希望您将在脚本中解析初始请求中的查询字符串)。

相关内容