.htaccess重定向两页之间的冲突

时间:2014-07-07 09:03:03

标签: php .htaccess redirect

以下是我的目录结构。

|--inc (folder)
   |-->header.php
   |-->footer.php
|--css (folder)
|--js (folder)
|--images (folder)
|--index.php
|--product.php
|--items.php

php文件index.phpproduct.phpitems.php都用于将文件包含在inc文件夹

现在我使用.htaccess重定向我的使用,就像我想要一些文件重定向到product.php和一些文件到item.php

第一种方法

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On

   RewriteCond %{SCRIPT_FILENAME} !-d
   RewriteCond %{SCRIPT_FILENAME} !-f


   RewriteRule ^([A-Za-z0-9-]+)$ ./product.php?fd=$1 [L,NC,QSA]
   RewriteRule deal/([A-Za-z0-9-]+)$ ./item.php?id=$1&id2=$2 [L,NC,QSA]


</IfModule>

在这种方法中,内容的URL(CSS,JS,图像,.php文件)也重定向并更改到我的item.php文件中的/ deal / css或/ deal / images等但是那里不是文件夹名deal。我刚添加deal以消除两次​​重定向之间的冲突

第二种方法

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On

    # first try to see if belongs to item.php based on URI pattern
    RewriteRule ^([a-z0-9-]+)/([a-z0-9-]+)$ ./item.php?idd=$1&id=$2 [L,NC,QSA]

    # No try /j/display.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([a-z0-9-]+)$ ./product.php?fd=$1 [L,NC,QSA]
</IfModule>

此代码也有同样的问题

帮助!!!任何帮助表示赞赏..

1 个答案:

答案 0 :(得分:1)

问题不在于您的规则正在重写您的css或图片或javascript的请求,因为您在内容中使用了相对链接而{{1 \ n} URL的一部分使浏览器认为您*实际上希望您的脚本/ images / css位于/deal/文件夹中。您需要将链接设为绝对URL或将相对URI基础添加到页面标题中:

/deal/