簡體   English   中英

使用RewriteRule時,為什么我的php文件無法找到外部文件(圖像,css…)?

[英]Why is my php file unable to locate external files (image,css…) when using RewriteRule?

我正在使用以下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) .com / e /)。

您可以為網站的所有路徑使用基本網址,如下所示:

<base href="http://yoursite.com/blog/" />

要么

<base href="/blog/" />

然后從基地的寫相對路徑:

<a href="rule/foo/">...</a>

另外,您必須格外小心那些“全部接受”模式,因為如果使用不當,它們可能會與樣式表,圖像和其他媒體沖突。 可以在模式上添加擴展名或排除媒體都是可能的修復方法。

使用mod_rewite時必須寫完整路徑而不是相對路徑

參考

apache mod重寫
多一個
初學者指南

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM