Mod 重写以获取 url 中的表达式作为参数

Mod rewrite to get expression in url as parameter

我正在尝试重写 url。我想在浏览器中输入这个url:

 localhost/subDir/page-name/value1/value2 

然后将 value1 en value 2 读取到查询字符串中,像这样:

localhost/subDir/page-name/?firstArg=value1&secondArg=value2

这是一个 wordpress 网站。 wordpress 安装在一个名为 "subDir" 的子目录中。 wordpress页面被称为 page-name" 并转到 localhost/subDir/page-name 有效。标准永久链接有效,因此启用 mod_rewrite。这是我的 .htacces 文件

# BEGIN WordPress

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /subDir/

RewriteRule page-name/([^/]+)/([^/]+)/? page-name/?firstArg=&secondArg= [QSA]
RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /subDir/index.php [L,QSA]

</IfModule>

# END WordPress

mod_rewrite 不将查询字符串视为匹配 URI 的一部分 和重写,应该分开处理。

RewriteCond "%{QUERY_STRING}" "^firstArag=([^=]*)&secondArg=([^=]*)
RewriteRule "/subDir/index.php" "http://localhost/subDir/page-name/%1/%2" [R]

[R]表示指向由RewriteRule指令

构造的URL

您可以用这个替换您当前的代码

# BEGIN WordPress
<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /subDir/

   RewriteRule ^page-name/([^/]+)/([^/]+)/?$ page-name/?firstArg=&secondArg= [L]
   RewriteRule ^index\.php$ - [L]

   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^ index.php [L,QSA]
</IfModule>
# END WordPress