2010-12-20 22 views
0

我一直在試圖把我的例子1中的URL變成使用mod_rewrite但是沒有成功的例子2?我正在使用godaddy。另一個mod改寫問題

實施例1對

http://www.example.com/categories/details.php?cat=fruit 

實施例2

http://www.example.com/categories/fruit/ 

這裏是在我的類別文件夾我的國防部重寫代碼。

Options +FollowSymLinks 
Options -MultiViews 
RewriteEngine on 
RewriteBase /categories/ 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule ^(.*)$ http://www.example.com/categories/$1 [R=301,L] 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php(.*)\ HTTP/ [NC] 
RewriteRule ^index\.php(.*)$ http://www.example.com/categories/$1 [R=301,L] 

RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]*)$ 
RewriteRule ^details\.php$ http://www.example.com/categories/%1.php [R=302,L] 

回答

0

試試這個。

RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]+) 
RewriteRule ^categories\/details\.php$ http://www.example.com/categories/%1 [R=302,L] 

此:

RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]+) 

應匹配查詢。所以它應該在查詢的開始處找到cat,並且在cat是var之後匹配組。現在你也可以匹配子類別了。 來匹配多的人,你可以不喜歡

RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]+)\&sub1=([a-zA-Z0-9]+) 
RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]+)\&sub1=([a-zA-Z0-9]+)\&sub2=([a-zA-Z0-9]+) 

然後你可以使用1%,2%,3%作爲您的變量。

此:

RewriteRule ^categories\/details\.php$ http://www.example.com/categories/%1 [R=302,L] 

將匹配整個URL減去域。並且您使用%1從rewritecond獲取組。

=============== OLD ===============

我不是很好的正則表達式,但^將匹配一行的開頭。所以試試看。

^categories\/details\.php\?cat=(.*)$ 

Then you will need to use http://www.example.com/categories/$1 

如果你需要我解釋正則表達式給你讓我知道。這很簡單,我可以解釋它。

您可以更換該部分:

RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]*)$ 
RewriteRule ^details\.php$ http://www.example.com/categories/%1.php [R=302,L] 

有:

RewriteRule ^categories\/details\.php\?cat=(.*)$ http://www.example.com/categories/$1 

我不能確切記得如何mod_rewrite的作品,所以我不想給你使用的RewriteCond不良信息。

好吧,使用你以前的東西。嘗試僅將類別添加到它。

RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]*)$ 
RewriteRule ^categories\/details\.php$ http://www.example.com/categories/%1 [R=302,L] 

另外一張紙條:

我可能會使用+而不是*爲好。 ?所以^貓=(A-ZA-Z0-9] +)$

嘗試是這樣的:

RewriteCond %{QUERY_STRING} ^(.*&)?cat=([a-zA-Z0-9]+)$ 
RewriteRule ^categories\/details\.php$ http://www.example.com/categories/%2 [L] 
+0

在哪裏我把這個代碼? – maximum 2010-12-20 07:21:53

+0

我無法得到這個工作? – maximum 2010-12-20 07:27:26

+0

好吧我看着http://wiki.apache。org/httpd/RewriteQueryString如此糟糕的更新帖子,看看是否有效。 – Matt 2010-12-20 07:28:09