我正在尝试清理我的网址路径,以便我在所有链接中都没有任何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规则。
那么我做错了什么?请不要将我的问题标记为重复,我一直在研究类似的问题,但无法解决问题。
答案 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">