.htaccess将查询字符串重写为路径

Use*_*upt 10 apache .htaccess mod-rewrite

我已经搜索过这个问题,但我只是遇到了很难根据我的具体需求量身定制的具体答案.

假设我试图重写的URL是这样的:

http://www.example.org/test.php?whatever=something
Run Code Online (Sandbox Code Playgroud)

我想重写它,使它看起来像这样:

http://www.example.org/test/something
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Jon*_*Lin 22

为了路由一个/test/something内部重写的请求以便提供服务的内容/test.php?whatever=something,您可以在文档根目录中的htaccess文件中使用这些规则:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?test/(.*?)/?$ /test.php?whatever=$1 [L]
Run Code Online (Sandbox Code Playgroud)

并且为了将查询字符串URL重定向到更好看的URL:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /test\.php\?whatever=([^\&\ ]+)
RewriteRule ^/?test\.php$ /test/%1? [L,R=301]
Run Code Online (Sandbox Code Playgroud)