如何使用本地主机的 .htaccess 从 URL 中删除目录名称

Posted

技术标签:

【中文标题】如何使用本地主机的 .htaccess 从 URL 中删除目录名称【英文标题】:How to remove Directory name from the URL using .htaccess for localhost 【发布时间】:2021-01-24 09:40:39 【问题描述】:

我想更改网址:

http://localhost/rootdirectory/portfolio/project-1.php

收件人:

http://localhost/rootdirectory/project-1

我目前使用了下面的代码,但它不起作用

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^portfolio/(.*)$ /$1 [L,NC,R=301]

此代码将我的 URL 重写为 http://localhost/project-1 而不是 http://localhost/rootdirectory/project-1.

【问题讨论】:

所以让它重定向到/rootdirectory/$1 然后...? 或者$1,如果这个.htaccess 本身应该已经位于/rootdirectory .htaccess 已经在根目录中 【参考方案1】:
    转到包含您网站的所有文件的文件夹。 在您的 cpanel 中将所有文件复制到您的 Public_html 文件夹。

【讨论】:

OP 希望通过仅更改 URL 结构而不是底层文件结构来实现“漂亮”的 URL。不应将任何实际文件移动到任何地方。【参考方案2】:

此代码将我的 URL 重写为 http://localhost/project-1 而不是 http://localhost/rootdirectory/project-1

您发布的代码是“重定向”,而不是“重写”,从/portfolio/<project>/<project> 的URL。

从您的 URL 示例看来,您应该重写 URL 从 /rootdirectory/<project>/rootdirectory/portfolio/<project>.php(假设您已经在应用程序中更改了 URL)。如果 .htaccess 文件位于 /rootdirectory/.htaccess(如 cmets 中所述),那么您将需要类似以下内容:

RewriteRule ^([^./]+)$ portfolio/$1.php [L]

并且移除 RewriteBase / 指令。

【讨论】:

它仍然在 url 中显示目录名称 portfolio,例如 rootdirectory/portfolio/project 我想要的只是目录名称组合不应该出现在 url 中 您需要实际更改出现在 HTML 源代码中的 URL(因此出现在浏览器地址栏中)。 .htaccess 不会为你这样做。您实际上需要将链接更改为/rootdirectory/project-1。然后,您使用.htaccess 将请求从/rootdirectory/project-1内部重写/rootdirectory/portfolio/<project>.php - 如上所述。

以上是关于如何使用本地主机的 .htaccess 从 URL 中删除目录名称的主要内容,如果未能解决你的问题,请参考以下文章

如何在本地主机上使用 htaccess 制作 seo url? [关闭]

.htaccess 无法使用 XAMPP 在本地主机上工作

如何在 .Htaccess 中禁用/不允许共享主机 RewriteLog 时,在 Apache 2 中模拟和测试 URL 重写规则?

为本地开发调整 Windows 主机文件和 .htaccess

如何使用 htaccess 从 url 中删除文件夹名称

如何使用 .htaccess 密码保护 WordPress 博客