[英]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.