使用 .htaccess 重定向到目录 URL 但显示 URL 就像在根目录中一样

Use .htaccess to redirect to directory URL but show the URL as if in root

我目前有一个具有以下文件结构的 CRUD:

index.php 文件重定向到 add-product.php, delete.php等文件。问题是,URL 看起来像:myapp.com/resources/views/add-product 但我希望它看起来像 myapp.com/add-product。我发现其他与此类似的 Whosebug 帖子,但它重定向到所需的 link,而不是重定向到正确的 link,而是显示所需的,因此该网站无法正常工作(“在此服务器上未找到请求的 URL”)。 .htaccess 文件如下所示:

Options +FollowSymLinks +MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ .php [NC,L]
RewriteRule ^resources/(.*)$ / [L,NC,R]

我还使用该文件从 URL 中删除 .php。最后一行是处理错误重定向的那一行。我该怎么做?谢谢你的时间。

你可以这样使用它:

Options +FollowSymLinks +MultiViews
RewriteEngine On
RewriteBase /myapp/

# external redirect to remove /resources/views/ from URLs
RewriteRule ^resources/views/(.+)\.php$  [L,NC,R=302]

# internal rewrite to add /resources/views/ and .php to show content
RewriteCond %{DOCUMENT_ROOT}/myapp/resources/views/.php -f
RewriteRule ^(.+?)/?$ resources/views/.php [END]

一旦您确认它工作正常,请将 R=302 替换为 R=301。在测试 mod_rewrite 规则时避免使用 R=301(永久重定向)。