我在localhost / project中有一个index.php,profile.php文件 我在我的.htaccess文件中编写了以下代码,通过访问 localhost / project / sam
localhost / project / profile.php?u = samRewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?u=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?u=$1
当我访问 http:// localhost / project / sam 时,它会显示我想要的内容而不会出错。但是当我访问 http:// localhost / project / sam / (尾随 / )时,它会显示带有纯文本的页面,这意味着未附加css文件。
有人知道这个的原因吗?并帮我解决这个问题?
答案 0 :(得分:0)
你正在使用你的css的相对链接。
答案 1 :(得分:0)
你如何包含该css文件?如果您从PHP生成路径,如果您的请求包含尾随'/',它可能包含一个双'/'。请检查您的HTML输出并模糊CSS的路径。
答案 2 :(得分:0)
您可能正在使用相对URI路径来引用这些外部资源。如果没有另外指定,则相对URI将在基本URI上解析,该基本URI是当前文档的URI。
因此,当在css/style.css
上使用/project/sam
之类的相对URI路径时,它会被解析为/project/css/style.css
;但在/project/sam/
上使用时,它会被解析为/project/sam/css/style.css
。
您可以通过使用绝对URI路径/project/css/style.css
或使用BASE
element更改基URI来解决此问题。但请注意,后者将影响所有相对URI,而不仅仅是相对URI路径。
答案 3 :(得分:0)
要么使用斜线,要么禁止斜线,或者你永远不知道相对链接是否需要上升或不上升。例如禁止斜线:
RewriteRule ^(.*)/$ $1 [R]
将客户端重定向到不包含斜杠的同一页面。无论如何,最好为对象设置一个规范URI。