下面是我的。htaccess文件中的代码。虽然加载CSS和JS等资源失败,但所有路由都能正常工作。有人知道为什么吗?
注意:我正在通过2个子文件夹路由。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ folder/public/$1 [L]
RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ folder/public/index.php [L]
我的文件夹结构…
public_html
.htaccess
folder
folder
folder
public <-- contains my css and js also.
index.php
您需要复制第二条规则的所有条件。重写条件只适用于紧跟在重写规则之后的,因此需要应用于以下规则的任何条件都需要复制:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{REQUEST_URI} folder/public/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ folder/public/$1 [L]
RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{REQUEST_URI} folder/public/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ folder/public/index.php [L]
虽然我不确定这个规则的意义是什么:RewriteCond %{REQUEST_URI} folder/public/
我在另一个项目中遇到了类似的问题。下面是我们使用的技巧:
您可以添加其他扩展名
SetEnv APPLICATION_SAUF_EXT js|ico|css
... Your specifics rules .htacces
RewriteRule !'.(%(APPLICATION_SAUF_EXT))$ index.php
我希望这对你有帮助。