我在摆弄.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 –