我需要将所有 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
因为查询字符串附加到了替代默认情况下(尽管我希望您将在脚本中解析初始请求中的查询字符串)。