PHP-使用htaccess清理URL会破坏我的CSS

我正在尝试清理URL路径,以便在所有链接中都没有任何GET参数和PHP扩展名.作为我要实现的目标的一个示例:

http://localhost/projectname/?page=dashboard

需要是:

http://localhost/projectname/dashboard/

它确实有效,我在.htaccess中使用了以下代码:

RewriteEngine on
RewriteCond %{REQUEST_URI} dashboard/
RewriteRule dashboard/ http://localhost/projectname/?page=dashboard

但是,页面显示时没有任何CSS或Javascript.我试图导航到Style.css只是为了发现它看起来与网页本身完全相同,而不是向我展示我的CSS规则.

那我在做什么错?请不要将我的问题标记为重复,我一直在研究类似的问题,但无法解决问题.

解决方法:

当您的URL从/ projectname /更改为/ projectname / dashboard /时,您正在更改相对URI.

发生这种情况时,页面上的每个相对链接都将添加错误的库.当浏览器看到的唯一位置是/ projectname / dashboard /时,它就不知道其基础实际上是/ projectname /.

现在,当您的css链接为:

<link rel="stylesheet" href="Content/style.css">

浏览器尝试通过从该位置添加基础来解决该问题,并加载:

https://localhost/projectname/dashboard/Content/style.css

由于“仪表盘”实际上不是文件夹,因此不存在.

您可以通过在页面标题中添加基本内容来为基本页面添加基本内容:

<base href="/projectname/" />

或者,您可以尝试通过添加此规则来取消重写仪表板,使其不属于请求(更棘手,更容易出错)

RewriteCond %{REQUEST_URI} ^/projectname/dashboard/(.*\.css)$
RewriteCond %{DOCUMENT_ROOT}/projectname/%1 -f
RewriteCond ^projectname/dashboard/(.*\.css)$/projectname/$1 [L]

请注意,这是否会对浏览器的缓存产生意外影响.

上一篇:php-为404页创建重定向


下一篇:使用PHP和jQuery将PDF打印到页面