2017-05-26 139 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问题。