2017-05-26 104 views
1

我的.htaccess文件更改http://example.com/animal.php?id=numberhttp://example.com/animal/numberHtaccess url重寫,新文件夾,但文件加載到父文件夾

如果我去http://example.com/animal/number,此代碼在/animal文件夾中加載animal.php的其他文件,但該文件夾不存在。

我想要它的工作,如果我去/animal/number頁面,代碼將加載animal.php的父文件夾中的其他文件(http://example.com/)。

例子:我包括animal.phpheader.php,這是工作,但如果我去/animal/number頁,這是行不通的,因爲header.php不在/animal文件夾中。

.htaccess文件:

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    #RewriteBase /htdocs/test 

    RewriteRule ^animal/([A-Za-z0-9-]+)/?$ animal.php?id=$1 [NC,L] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?page=$1 [QSA] 
</IfModule> 
+0

你如何包含'header.php'? – MrWhite

回答

0

你似乎描述的是一個客戶端相對URL的問題。如果您在客戶端HTML中使用相對的網址,則相對於/animal「子目錄」(如URL中指定的)而言,自然會請求任何資源(CSS,JS,圖像等),而不是文檔根目錄實際文件的位置)。瀏覽器只能看到URL,而不是底層的文件系統路徑。

您需要通過在客戶端HTML中使用根相對URL(以斜線開頭)或絕對URL(方案+主機名)來解決此問題。或者,您可以在HTML的head部分中設置一個base元素,以告知瀏覽器在解析相對鏈接/ URL時使用哪個URL作爲基本URL。 (但請注意,有警告與使用base元素,如果你正在使用的頁只是一個片段標識符,如鏈接形式href="#internal-id"的 - 因爲這被認爲是相對 URL)。

我包括header.php in animal.php`

無論其......「包括header.php」意味着服務器端包含(如:include('header.php')),其中有無關的URL結構,相對URL(以HTML),因此與URL重寫和你的.htaccess文件。

除非......您將此作爲某種JavaScript AJAX請求(或甚至是框架)包含在內? (因此,我在上面的評論中查詢)。在這種情況下,如上所述,會出現相同的相對URL問題。