2014-04-07 141 views
-1

目前我工作在我的網站轉移到搜索引擎友好的URL(在本地主機)友好,PHP SEO用乾淨的URL

這裏的原始URL與查詢字符串:

http://{ip}/sitename/item.php?category=44 

我想轉換爲:

http://{ip}/sitename/item/category/44 

的.htaccess文件(與item.php相同的目錄):

DirectoryIndex index.php 
Options -Indexes 

<files page> 
ForceType application/x-httpd-php 
</files> 

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-l 
    RewriteRule ^.*$ item.php%{REQUEST_URI} [L] 
    RewriteRule ^/item/([0-9]+) /item.php?category=$1 
</IfModule> 

<Files *htaccess> 
Deny from all 
</Files> 
item.php

,我用$_GET['category']

$category = preg_replace('/[^0-9]/', '', $mysqli->real_escape_string($_GET['category'])); 

$list = $listing->get_items($category, $mysqli); 

if($list == 0){ 
echo '<p><h2>Page not found</h2></p>'; 
die(); 
} 

問題1: 當我裝http://{ip}/sitename/item/category/44,頁面無法得到變量傳遞到get_item(),頁面顯示Page not found? 44是假設返回一個值。

問題2: 我的頁面沒有加載的引用文件,所有*.css*.js等被忽略?

+0

你的重寫基地定義在哪裏?我相信你錯過了正確的位置。 –

回答

0

問題2 - 問題出現了,因爲您沒有提到基本路徑。

您需要指定加載css和其他引用的基本路徑。

嘗試<head>標籤<base href="http://www.MYSITE.com/" />

這將加載你的CSS/JS用這個。

+0

我使用@Neeraj Kumar腳本並添加了'',現在頁面運行良好。謝謝!! – conmen

0

問題1:這裏沒有發生重寫 - (你只認爲它有,因爲你的腳本item.php被調用了,因爲你在URL中有item,MultiViews已經完成了它的工作) - RewriteRules匹配的路徑。 htaccess 從來沒有/開頭,所以刪除它。

問題2:之前已經討論過很多次(對於知道相對URL完成的基本知識的人也應該明白) - 參見f.e. .htaccess URL Rewrite Problem (Scripts don't load)

1

在.htaccess文件試試這個:

Options +FollowSymLinks 
RewriteEngine on 
RewriteRule item/category/(.*) item.php?category=$1 
0

RewriteEngine敘述在
RewriteBase /站點名稱
重寫規則^項/([0-9] +)/ $ item.php類別? = $ 1 [L,NC]