我有一个小型 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]