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


.htaccess redirection confliction between two pages

以下是我的目录结构。

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

php文件index.php, product.php, items.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,Images,.php文件)也重定向和更改到/deal/CSS或/deal/Images等在我的item.php文件中,但没有文件夹名称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>

这个代码也有同样的问题

请帮助! !

问题不在于你的规则重写请求你的css或图像或javascript,这是因为你在你的内容和URL的/deal/部分使用相对链接使浏览器认为你*实际上想要你的脚本/图像/css在/deal/文件夹。您需要将链接设置为绝对url,或者在页面标题中添加一个相对URI基:

<base href="/" />