我正在尝试清理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]
请注意,这是否会对浏览器的缓存产生意外影响.