2014-07-07 54 views
0

以下是我的目錄結構。.htaccess兩頁之間的重定向衝突

|--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文件ANS一些文件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> 

在這種方法中的內容(CSS,JS,圖像,.php文件)也重定向和更改/交易/ CSS或/交易/圖片等鏈接在我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> 

這段代碼也有同樣的問題

PLZ幫助!任何幫助表示讚賞..

回答

1

問題不是你的規則是重寫你的CSS或圖像或JavaScript的請求,這是因爲你在你的內容中使用相對鏈接,並且URL的/deal/部分使得瀏覽器認爲你*實際上希望你的腳本/圖像/ css在/deal/文件夾中。你需要使你的鏈接絕對URL或添加一個相對的URI基地頁面的標題:

<base href="/" /> 
+0

謝謝你回答我的問題,但你可以請詳細說明這一點?我對所有這些東西都很陌生。 – Anonymous

+0

並且由於以下警告我無法給出絕對路徑 **警告**:include():在服務器配置中,通過allow_url_include = 0禁用了http://封裝器:C:\ xampp \ htdocs \ shop \ item.php on line 2 警告:include(http://localhost/shop/admin/qconnect.php):未能打開流:在C:\ xampp \ htdocs \ shop \ item中找不到合適的包裝.php on line 2 **警告:** include():打開'http://localhost/shop/admin/qconnect.php'失敗(include_path ='。; \ xampp \ php \ PEAR')。在第2行的C:\ xampp \ htdocs \ shop \ item.php中 – Anonymous

+0

@Anonymous當你轉到一個類似於'/ deal/abcd1234'的URL,並且在頁面的內容中有一個這樣的URI:''。瀏覽器必須「猜測」URL的基礎是什麼,並且通過查看位置欄中的URL(瀏覽器對服務器上的重寫或內容實際所在的位置完全無能爲力)來做到這一點,並且它看到了「/ deal」 /',所以它將它作爲URL基礎,並將其附加到內容中的所有相對URL **,使其看起來像:'/ deal/images/1.pmg' –