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