漂亮网址的CSS问题

时间:2010-12-05 08:35:41

标签: .htaccess

我在localhost / project中有一个index.php,profile.php文件 我在我的.htaccess文件中编写了以下代码,通过访问 localhost / project / sam

localhost / project / profile.php?u = sam
RewriteEngine 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文件。

有人知道这个的原因吗?并帮我解决这个问题?

4 个答案:

答案 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。