通过重写从 url 中删除 /views/

Remove /views/ from url with rewrite

我正在尝试学习如何使用 htaccess 重写,但我就是无法掌握它。我要做的是制作以下网址:

mysite.com/
mysite.com/views/clients
mysite.com/views/projects
mysite.com/views/estimates

...看起来像这样:

mysite.com/
mysite.com/clients
mysite.com/projects
mysite.com/estimates

应该够简单了吧。但我就是做不到。

假设您应用中的 URL 已经是 /clients 的形式,而不是 /views/clients,然后在文档根目录的 .htaccess 文件中尝试以下操作:

RewriteEngine On

# Remove "views" from all (typed) URLs with external redirect
RewriteCond %{THE_REQUEST} /views/([^\ ]*)
RewriteRule .* /%1 [R,L]

# Internally rewrite specific requests back to /views
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(clients|projects|estimates)/(.*) /views// [L]

一旦您对它的工作感到满意,然后将 R(临时)重定向更改为 R=301(永久)。

这会在重定向前检查 THE_REQUEST 以防止重定向循环。