.htaccess漂亮网址问题

时间:2012-05-30 19:03:20

标签: .htaccess friendly-url pretty-urls

我正在改变

mydomain.com/directory/?name=lorem&action=posts

mydomain.com/directory/lorem/posts

但我现在正试图添加一个名为“其他”的

所以我想得到

mydomain.com/directory/?name=lorem&action=posts&other=38291389

mydomain.com/directory/lorem/post/38291389

这是我用于第一个例子的.htaccess代码

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^(\w+)(/(\w+))?$ /directory/?name=$1&action=$3

这是我试图为第二个例子制作的那个,但它不起作用

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^(\w+)(/(\w+))?$ /directory/?name=$1&action=$3&other=$4

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

保持简单:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} -d [OR] 
RewriteCond %{SCRIPT_FILENAME} -f [OR]
RewriteRule .* - [L]

RewriteRule ^(\w+)/(\w+)/(\w+)/?$ /directory/?name=$1&action=$2&other=$3
RewriteRule ^(\w+)/(\w+)/?$ /directory/?name=$1&action=$2
RewriteRule ^(\w+)/?$ /directory/?name=$1

在单个正则表达式中组合多个效果并没有真正的好处(虽然它很聪明并且让你感觉良好)但是当正则表达式引擎完成其工作时,聪明的正则表达式可能需要更多时间来匹配比2或3更简单规则(如上所述)。