0

我使用 .htaccess 重写网址。请参见下面的示例:

我的文件夹树状结构是这样的:

  • 我的网站(文件夹)
    • css(文件夹)
      • 样式.css
    • 我的页面.php
    • .htaccess

当我打电话时http://localhost/mysite/mypage/myid它被重定向到http://localhost/mysite/mypage.php?id=myid

那么问题是它似乎没有调用我的css,它是:

<link href="css/style.css" rel="stylesheet" type="text/css" />

我的 .htaccess 的内容是:

RewriteEngine on
RewriteBase /mysite
RewriteRule ^mypage/([^/]*) mypage.php?id=$1

提前致谢

编辑 :

我尝试了解决方案:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

我仍然无法调用css:/

编辑 2:

好的,我可以像这样调用我的 CSS 来让它工作:

<link href="/mysite/css/style.css" rel="stylesheet" type="text/css" />

看起来我还必须使用路径“/mysite/”调用我在 html 中的所有图像

4

3 回答 3

1

Your styling get's called relative now, so you should call it absolute.

There is no /myid/css/ folder, that's what your code is looking for now.

<link href="<?php echo $_SERVER['SCRIPT_URI'];?>css/style.css" rel="stylesheet" type="text/css" />
于 2013-07-29T14:05:01.073 回答
1

添加重写条件:

RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^mypage/([^/]*) mypage.php?id=$1

现在您的 css(以及其他文件和目录)将不会通过 rewriterule 发送

于 2013-07-29T13:52:34.423 回答
1

您需要告诉重写引擎忽略实际存在的目录和文件:

RewriteEngine on
RewriteBase /mysite
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^mypage/([^/]*) mypage.php?id=$1
于 2013-07-29T13:52:35.033 回答