12

我已经搜索了这个问题,但我只遇到了非常具体的答案,这些答案似乎很难适应我的特定需求。

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

http://www.example.org/test.php?whatever=something

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

http://www.example.org/test/something

我怎样才能做到这一点?

4

1 回答 1

27

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

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

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

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /test\.php\?whatever=([^\&\ ]+)
RewriteRule ^/?test\.php$ /test/%1? [L,R=301]
于 2012-10-22T00:00:00.743 回答