簡體   English   中英

Htaccess url重寫,新文件夾,但文件加載在父文件夾中

[英]Htaccess url rewrite, new folder, but files load in parent folder

我的.htaccess文件將http://example.com/animal.php?id=number更改為http://example.com/animal/number

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

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

示例:我在animal.php包含header.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>

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

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

header.php in animal.php`中包含了header.php in

但是......“包括header.php ”意味着服務器端包含(例如include('header.php') ),它與URL結構,相對URL(在HTML中)無關,因此沒有任何關系使用URL重寫和.htaccess文件。

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

暫無
暫無

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

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