我的htaccess重定向css,js文件也。我试过了,但没有成功。我的所有js文件重定向到page.php.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/(.*)$ page.php?lang=$1&page=$2 [NC,QSA,L]
RewriteRule ^(.*)$ page.php?page=$1 [NC,QSA,L]
如注释中所述,RewriteCond
指令仅适用于后面的第一个RewriteRule
指令。因此,对于第二条规则,您也需要重复这些条件。
然而,根据您的URL结构,如果您只是使regex更具体,您可能根本不需要这些条件——这也会更高效,因为文件系统检查相对昂贵。
例如,假设您的";语言代码";(可选的第一个路径段(由2个小写字母组成,并且page
URL路径段不包含点(否则可能会与文件扩展名混淆(,那么您可以重写指令,如下所示:
RewriteEngine On
RewriteRule ^([a-z]{2})/([^/]*)$ page.php?lang=$1&page=$2 [QSA,L]
RewriteRule ^([^/]*)$ page.php?page=$1 [QSA,L]
由于正则表达式现在限制性更强,不再冲突,因此这些指令的顺序无关紧要。
除非您有混合大小写语言代码,否则不需要NC
标志。
您还可以更进一步,通过使语言路径段可选,将这两个规则合并为一个规则。lang
URL参数现在将始终存在,但可能为空。
RewriteRule ^(?:([a-z]{2})/)?([^/]*)$ page.php?lang=$1&page=$2 [QSA,L]