我正在使用WAMP安装并通过index.php文件路由所有内容。当我删除.htaccess文件时,我的标题中的CSS和JS文件被调用,所以文件路径是正确的,但是一旦我再次插入.htaccess文件,Chrometools会在包含我的JS文件时抛出此错误
Uncaught SyntaxError: Unexpected token <
在查看Chrometool的网络&gt;&gt;响应时,它会显示JS文件包含index.php文件呈现的所有内容。
这是我的代码 RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf|xml)$ [OR]
RewriteRule ^([^/]*)$ index.php?_page=$1
RewriteRule ^([^/]*)/([^/]*)$ index.php?_page=$1&_action=$2 [QSA,L]
RewriteRule ^([^/]*)/([^/?]*)/(.*)$ index.php?_page=$1&_action=$2&$3 [QSA,L]
我认为%{REQUEST_FILENAME}!-f应该阻止在直接调用文件时重写文件?
我发现引起问题的那一行是第二个RewriteRule。
RewriteRule ^([^/]*)/([^/]*)$ index.php?_page=$1&_action=$2 [QSA,L]
因为我的JS和CSS存储在项目根目录下的两个目录中,所以规则是将文件定向到我的index.php。
在我注释掉RewriteRule
之前,这些命令都没有任何影响RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !\.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf|xml)$ [NC]
有什么想法吗?
答案 0 :(得分:1)
尝试并更改此行。
RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf|xml)$ [OR]
到此
RewriteCond %{REQUEST_FILENAME} !\.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf|xml)$ [NC]
看到的对你有用。
修改强>
您需要所有规则的条件。重写条件仅适用于其后的第一条规则。你也可以拥有它,如果它匹配静态内容,那么就不要做任何事情。以这种方式尝试你的规则。
RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf|xml)$ [NC]
RewriteRule ^(.*)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ index.php?_page=$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)$ index.php?_page=$1&_action=$2 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/?]*)/(.*)$ index.php?_page=$1&_action=$2&$3 [QSA,L]