如何编写 Apache .htaccess 文件来强制使用“友好” URL?

如何编写 Apache .htaccess 文件来强制使用“友好” URL?

我有一个小型 PHP MVC 框架,它在使用 Ubuntu 的 droplet 上运行,我正在尝试使所有 URL 都“友好”。来自:

index.php?u=controller/method/param

到:

controller/method/param

为此,我使用.htaccess包含以下代码的文件:

Options -MultiViews
RewriteEngine on

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?u=$1 [L,QSA]

这样,我就可以让 URL 更友好,但不友好的 URL 仍然存在。因此,我可以通过两种方式访问​​相同的内容:

index.php?u=controller/method/param

这与以下内容相同:

controller/method/param

如何强制 URL 始终保持友好?不再如此index.php?u=

答案1

使用下面的规则,我们将任何请求重定向到具有查询参数的 index.php 到新创建的漂亮 url。

Options -MultiViews
RewriteEngine on

RewriteBase /
RewriteCond %{REQUEST_URI} ^index.php$
RewriteCond %{QUERY_STRING} ^u=(.*)$
RewriteRule ^ http://example.com/%1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*)$ index.php?u=$1 [L,QSA]

相关内容