我正在使用以下 RewriteRules :
RewriteRule ^([a-zA-Z0-9]+)$ page.php?p=$1
RewriteRule ^e/([a-zA-Z0-9]+)$ edit.php?p=$1
第一个工作正常:输入 mysite.com/id 时,它会在服务器端加载 mysite.com/page.php?p=id。
第二个也可以:当我输入 mysite.com/e/id 时,它会加载 mysite.com/edit.php?p=id (如预期的那样)。但在这种情况下,edit.php 无法找到任何外部文件,例如我的 css 文件。
<link rel="stylesheet" type="text/css" href="style.css" />
执行以下任一操作时:
<link rel="stylesheet" type="text/css" href="../style.css" />
或者简单地删除 RewriteRule 中的目录,例如:
RewriteRule ^e_([a-zA-Z0-9]+)$ edit.php?p=$1
它解决了这个问题。
现在我不明白为什么我的edit.php无法找到外部文件,即使它加载在服务器端(mysite.com/)的正确路径上,而不是像在额外目录中显示的url(在本例中为mysite 。来/ )。