使用htaccess清理网址会破坏我的CSS

时间:2018-01-30 00:10:49

标签: php .htaccess

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

id   project  start_date    designation
1      P1     08/10/2018    2

需要:

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

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

http://localhost/projectname/dashboard/

但是,页面显示自己没有任何CSS或Javascript。我尝试导航到我的Style.css,但发现它看起来与网页本身完全一样,而不是向我显示我的CSS规则。

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

2 个答案:

答案 0 :(得分:2)

当您的网址从/projectname/升级到/projectname/dashboard/时,您正在更改相对URI。

当发生这种情况时,页面上的每个相对链接都会添加错误的基础。当浏览器看到的所有位置都在/projectname/时,浏览器根本不知道该基础实际上是/projectname/dashboard/

现在,当您的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]

请注意,这可能会对浏览器的缓存产生意想不到的影响。

答案 1 :(得分:1)

使用CSS的绝对路径。

<link rel="stylesheet" href="http://localhost/projectname/assets/style.css">