2014-01-28 59 views
0

我被分配到一個新的網站,我需要把頁面路由和「個性化網址」與的.htaccess的.htaccess重寫爲特定目錄

我真的不熟悉htaccess的,儘管我所有的研究工作,我還沒有得到任何堅實的答案。

該網站有一個定製的PHP管理系統位於名爲「admin」的子目錄中。我根本不想惹它,所以無論我對htaccess所做的更改都不會影響該子目錄。

因此,鑑於頁面有3個主要「頁面」:家庭,購買和出售,我需要對「www.sitename.com」和「www.sitename.com/index.php」進行路由請求到主頁。我需要向「www.sitename.com/sell」發送請求才能轉到銷售頁面。

然後最困難的部分是,我需要向「www.sitename.com/buy」發送路由至「buy.php」的請求,但是請求「www.sitename.com/buy/category-name」路由到「www.sitename.com/buy.php?c=12」

我知道很多要問,但如果任何人都可以指引我在正確的方向,這將不勝感激。

回答

0

試試這個:

RewriteEngine On 

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

RewriteRule ^sell$ ./sell.php 
RewriteRule ^buy$ ./buy.php 
RewriteRule ^buy/(.*)$ ./buy.php?c=$1 

如果該類別總數字替換(.*)(\d+)

+0

這個作品,如果我去/或購買/賣出或/指數,等等......但是,如果我去/ buy/category-name我得到一個500服務器錯誤。即使我去購買/ 3,我仍然得到一個內部服務器錯誤... – user1621945

+0

你確定500錯誤是由htaccess而不是PHP腳本造成的嗎?請提供您的apache error.log相關的行 – ManiacTwister

1

這些規則應該爲你工作:

RewriteEngine On 
RewriteBase/

# skip admin OR any valid file/dir 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_URI} /admin/ [NC] 
RewriteRule^- [L] 

RewriteRule ^(sell|buy)/?$ $1.php [NC,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(buy)/([^/]+)/?$ $1.php?c=$2 [L,NC,QSA] 
+0

這個工作,如果我去/買或/出售或/索引,等等......但是,如果我去/購買/類別名稱,我得到一個500服務器錯誤。即使我去買/ 3,我仍然得到一個內部服務器錯誤... – user1621945

+0

我現在有一個錯誤糾正它。請再試一次。 – anubhava

0

我覺得這個希望 /*複製並粘貼在下面,保存名稱。 htaccess的*/

RewriteEngine On 
RewriteBase /yousite.com/ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME}.php -f 
#ex1:http://yousite.com/buy/3 
RewriteRule ([a-zA-Z_-]+)/([0-9]?) buy.php?c=$1 

/*和你的PHP文件*/

<!-- #ex1:http://yousite.com/buy/3 --> 
<a href="<?php echo "buy/3" ?>">buy/3</a> 
+0

這個工作,如果我去/買或/賣或/索引,等等......但是,如果我去/購買/類別名稱,我得到一個500服務器錯誤。即使我去買/ 3,我仍然得到一個內部服務器錯誤... – user1621945

+0

www.sitename.com/buy/3只用於兩個條件... www.sitename.com/abjad/number ...如果你想要www.sitename.com/buy/kategory,那麼不得不再添加一個RewriteRule([a-zA-Z_-] +)/([a-zA-Z_-] +)buy.php? kategory = $ 1 –