我在擺弄.htaccess和mod_rewrite。我有一個具有兩種類型的網址,我想重寫網站:htaccess有條件重寫
/index.php?nav=$2
/index.php?nav=41&intNewsId=$3
- 41是靜態的,新聞導航始終是41
我想重寫它們於:
/pagename/id
/news/pagename/id
我已經發了條說代碼工作,但如果我添加的最後一行的第二線停止工作,並我能想象那是因爲在第三塊中的條件也爲第二塊如此。但我不知道如何正確使用條件。 (兩個塊工作個人)
Options +FollowSymlinks
RewriteEngine on
# Reroute rules that end on/
RewriteRule ^(.*)\/([0-9]|[1-9][0-9]|[1-9][0-9][0-9])$ /$1/$2/ [R]
# Make the system understand pagename/96
RewriteRule ^(.*)\/([0-9]|[1-9][0-9]|[1-9][0-9][0-9])/$ /index.php?nav=$2
# Make the system understand news/pagename/99
RewriteRule ^(.*)\/(.*)\/([0-9]|[1-9][0-9]|[1-9][0-9][0-9])/$ /index.php?nav=41&intNewsId=$3
我什麼都試過了我能想到的,但我不是太熟悉,打字或htaccess的條件塊的這個表達式風格。
解決方案: 我修好了我自己的代碼,我只是剝離了第二$這樣的條件didnt與最後一個
Options +FollowSymlinks
RewriteEngine on
# Reroute rules that end on/
RewriteRule ^(.*)\/([0-9]|[1-9][0-9]|[1-9][0-9][0-9])$ /$1/$2/ [R]
# Make the system understand pagename/96
RewriteRule ^(.*)\/([0-9]|[1-9][0-9]|[1-9][0-9][0-9])/ /index.php?nav=$2
# Make the system understand news/pagename/99
RewriteRule ^(.*)\/(.*)\/([0-9]|[1-9][0-9]|[1-9][0-9][0-9])/$ /index.php?nav=41&intNewsId=$3
謝謝你的答案全部擾!
爲什麼這個投票題外話? –
另外,注意你可以通過使用'(\ d +)'來避免這些'[0-9]'結構的笨拙,它捕獲任何一個或多個數字的塊。 –
噢,謝謝你的意見。注意我的([0-9] | [1-9] [0-9] | [1-9] [0-9] [0-9]),之前更糟:D –