我正在改变
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
有人可以帮我解决这个问题吗?
答案 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更简单规则(如上所述)。