2011-07-03 28 views
0

兩個不同的網頁我有兩個頁面:mod_rewrite的爲

categories.php 

在categories.php頁我取的所有類別。

news.php 

在新聞頁面我通過id獲取新聞。對於類別

我已經使用了mod_rewrite:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-zA-Z0-9-/]+)$ categories.php?url=$1 
RewriteRule ^([a-zA-Z0-9-/]+)/$ categories.php?url=$1 

site/categori1 ----> this rule works for categorie page 

它是更多鈔票開放mod_rewrite的兩個不同的頁面(categories.php和news.php)

重寫規則^([A-ZA-Z0-? 9 - /] +)$ news.php?url = $ 2 RewriteRule ^([a-zA-Z0-9 - /] +)/ $ new.php?url = $ 2

site/news-title1 above規則不適用於news.php頁面。

如何使用mod_rewrite爲兩個不同的頁面? 在此先感謝

回答

2

你必須要更具體什麼你的正則表達式匹配:

'^([A-ZA-Z0-9 - /] +)$' 將匹配幾乎一切。

你需要決定什麼樣的新聞頁面和匹配上,如區分類別頁面:

RewriteRule ^category/([a-zA-Z0-9-/]+)$ categories.php?url=$1 
RewriteRule ^category/([a-zA-Z0-9-/]+)/$ categories.php?url=$1 
RewriteRule ^news/([a-zA-Z0-9-/]+)$ news.php?url=$1 
RewriteRule ^news/([a-zA-Z0-9-/]+)/$ news.php?url=$1 

可以區分規則在一些其他的方式,但你必須這樣做。

你可以,例如,重新安排我的上述建議的規則,使這是不符合新聞前綴類別規則捕獲一切:

RewriteRule ^news/([a-zA-Z0-9-/]+)$ news.php?url=$1 
RewriteRule ^news/([a-zA-Z0-9-/]+)/$ news.php?url=$1 
RewriteRule ^([a-zA-Z0-9-/]+)$ categories.php?url=$1 
RewriteRule ^([a-zA-Z0-9-/]+)/$ categories.php?url=$1 
2

www.site.com/news-title1www.site.com/category1基本上匹配相同的URL,因此mod_rewrite的不能確定地決定在哪裏重定向。我會建議以下除了你已經擁有:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^news-([a-zA-Z0-9-/]+)/?$ news.php?url=$1 [L,NC,QSA] 
RewriteRule ^([a-zA-Z0-9-/]+)/?$ categories.php?url=$1 [L,NC,QSA] 

現在www.site.com/news-some-title類型的URI將被轉發到www.site.com/news.php?url=some-title什麼開始news-

www.site.com/some-category類型的URI會被轉發到www.site.com/category.php?url=some-category