Apache mod_rewrite 特定路径格式的查询字符串路径

Apache mod_rewrite path to query string for specific path format

我已经为此工作了数周。我希望能够使用友好的 URL 将变量传递给 PHP 脚本。例如,如果有人使用 URL:

https://example.com/foo/bar/who

我希望我的 PHP 脚本接收这个:

https://example.com/index.php/?var1=foo&var2=bar&var3=who

问题是我只想在路径中有三个变量时重写。如果少于或多于三个,我不想重写URL。

我看过其他几种与此类重写相关的解释,但没有一个与此完全相同。

这几乎可以正常工作,但还不够。如果前三个变量存在某些内容,我只希望完成重写。我知道这是不完整的,但使用此方法至少 REQUEST_URI 包含我可以解析的值。但同样,我只想在路径中有三个变量时执行此操作。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !^index\.php/([^/]*)/([^/]*)/([^/]*)$ index.php [L]

谢谢。

你已经很接近了,就这样吧。请确保在测试 URL 之前清除浏览器缓存。您已经创建了反向引用,只是您需要使用它们的东西,我现在已经添加了它们。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ index.php?var1=&var2=&var3= [L]