Regex 理解mod_重写正则表达式

Regex 理解mod_重写正则表达式,regex,.htaccess,mod-rewrite,Regex,.htaccess,Mod Rewrite,我有以下混乱的URL: http://localhost/writer/show?post_url=1rk8wy0h4 但是,我希望它改为: http://localhost/writer/show/1rk8wy0h4 这是查找URL混乱部分的正则表达式: /\?post_url=/ 对于我来说,使用这个表达式以简单的/替换它的最佳方式是什么 我当前的.htaccess文件: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f Rewr

我有以下混乱的URL:

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等价物是什么?

类似,但您希望与
%{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]

这些规则需要放在你的writer文件夹中。

你想把漂亮的URL转换成难看的URL吗?为什么?对不起,恰恰相反。丑陋到美丽。然后你需要将/writer/show/1rk8wy0h4转换为/writer/show?post_url=1rk8wy0h4你可以在这里轻松地尝试你的重写规则:你的htaccess在哪里(在哪个文件夹中)?另外,
show
是现有文件还是符号链接?谢谢。现在,每个$u GET请求似乎都以.php结尾
post_url=1rk8wy0h4
现在是
post_url=1rk8wy0h4.php
@tmyie你的另一个规则正在这样做,你需要在你的规则之前添加这些规则,在每个请求的末尾添加一个.php。我找不到很多关于“%{the_REQUEST}”的文档,它做什么呢?@tmyie这是HTTP请求的第一行,看起来像:
GET/path/to/file.php?param=value HTTP/1.1
。这是一个纯粹的要求。URI会随着规则的应用而被修改(除其他原因外),因此您可以对照
%{The_REQUEST}
检查原始的、未修改的请求是什么样子的。在本例中,我们需要知道请求实际上是针对带有查询字符串的URI的。