2014-11-25 31 views
0

在我的.htaccess文件中遇到正則表達式有些問題。.htaccess中的正則表達式(可選子目錄)

這就是我目前所面對的:

RewriteRule ^([a-z0-9\-_]+)/?(.*) $2 [NC] 
RewriteRule ^page/([a-z0-9\-_]+)/? page.php?id=$1 [NC,QSA] 

的第一條規則是應該卸下可選的「節」的一部分,從路徑,所以這兩種:

/section-2/news.php?id=73 
/news.php?id=73 

導致

/news.php?id=73 

而且工作正常。

第二條規則是應該把這些類型的路徑:

/section-2/page/page-title 
/page/page-title 

到:

/page.php?id=page-title 

但第一規則被刪除顯然/頁/從路徑不具有一個「部分」,因此,第二條規則不適用。

關於如何解決這個問題的任何建議?如果第一部分是/ page /,我如何使第一個規則不匹配?

回答

0

你可以在模式中定義單詞「section」?

RewriteRule ^(section[a-z0-9\-_]+)/?(.*) $2 [NC] 
+0

對不起,我沒有指定:「部分」可以是任何單詞。 「部分」只是一個例子。 – Skumberg 2014-11-25 13:03:30

0

經過更多的使用Google搜索和反覆試驗,我想出了第一條規則,它排除了以page /開頭的路徑。

RewriteRule ^((?!page/)[a-z0-9\-_]+)/?(.*) $2 [NC] 

這似乎是工作,但如果有人遇到了這個問題,並且對如何改進或優化這些規則的任何建議,請分享!