修改 mod 重写以获取 url 中的表达式作为参数


Mod rewrite to get expression in url as parameter

我正在尝试重写一个网址。我想在浏览器中输入此网址:

 localhost/subDir/page-name/value1/value2 

然后将 value1 en 值 2 读入查询字符串,如下所示:

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

这是针对WordPress网站。wordpress安装在一个名为"subDir"的子目录中。WordPress页面被称为页面名称"并转到本地主机/子目录/页面名称有效。标准永久链接正常工作,因此已启用mod_rewrite。这是我的 .htacces 文件

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /subDir/
RewriteRule page-name/([^/]+)/([^/]+)/? page-name/?firstArg=$1&secondArg=$2 [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=$1&secondArg=$2 [L]
   RewriteRule ^index'.php$ - [L]
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^ index.php [L,QSA]
</IfModule>
# END WordPress