CSS,JS和图像不会显示漂亮的网址

PHP*_*ton 5 apache url .htaccess mod-rewrite redirect

我试图通过htaccess文件重写URL,以便以下URL

www.domain.com/subfolder/index.php?key
Run Code Online (Sandbox Code Playgroud)

可通过以下方式访问:

www.domain.com/subfolder/index.php/key
Run Code Online (Sandbox Code Playgroud)

指定的"key"将确定要包含在PHP代码中的页面.我已经有了以下htaccess代码,但是在使用第二个(干净)URL时没有显示CSS,JS,图像等.关于什么可能是问题的任何想法?

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{DOCUMENT_ROOT}/$1 -f
RewriteRule ^[^/]+/([^.]+\.(?:js|css|jpe?g|png|gif))$ /$1 [L,R=301,NC]
RewriteRule ^index.php/([a-zA-Z0-9/_]+)$ index.php?key=$1
Run Code Online (Sandbox Code Playgroud)

Sum*_*ai8 6

当您使用相对网址时,浏览器将使用其加载的资源的网址动态创建完整网址.换句话说:它使用地址栏中显示的URL.在你的情况下(www.domain.com/subfolder/index.php/key)它试图加载相对于的任何相对URL www.domain.com/subfolder/index.php/.但是,您的资源不在那里.

您有两种方法可以解决此问题:

  • 将您的相对网址转换为绝对网址,至少是域根目录的绝对网址.<img src="img/unicorn.png">应该转变成类似的东西<img src="/path/to/img/unicorn.png">.

  • 在头元素中添加一个基础.将使用此基础而不是资源的URL来计算完整的URL.你应该添加<base href="/">到你的<head>元素./然后将被用作任何相对网址的基础.