理解mod_rewrite正则表达式

时间:2014-05-05 14:27:19

标签: regex .htaccess mod-rewrite

我有以下凌乱的网址:

http://localhost/writer/show?post_url=1rk8wy0h4

但是,我希望它改为:

http://localhost/writer/show/1rk8wy0h4

这是找到URL的混乱部分的正则表达式:

/\?post_url=/

使用此表达式的最佳方法是什么,以便用简单的/替换它?

我当前的.htaccess档案:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

这就是我用JavaScript做的事情

s = s.replace(/\?post_url=/, '/');

但我不确定如何用mod_rewrite替换。

什么是mod_rewrite等价物?

1 个答案:

答案 0 :(得分:0)

它类似,但您希望与%{THE_REQUEST}变量匹配。如下所示:

RewriteEngine On

RewriteCond %{THE_REQUEST} \ /+writer/show\?post_url=([^&\ ]+)
RewriteRule ^ /writer/show/%1? [L,R]

RewriteRule ^show/(.+)$ /writer/show?post_url=$1 [L]

这些规则需要位于编写器文件夹