【问题标题】:How to remove Directory name from the URL using .htaccess for localhost如何使用本地主机的 .htaccess 从 URL 中删除目录名称
【发布时间】: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 已经在根目录中

标签: php html .htaccess url-rewriting xampp


【解决方案1】:
  1. 转到包含您网站的所有文件的文件夹。
  2. 在您的 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 - 如上所述。
猜你喜欢
  • 2019-06-19
  • 2020-05-11
  • 1970-01-01
  • 1970-01-01
  • 2020-01-31
  • 2012-12-24
  • 2016-05-06
  • 2011-05-15
  • 1970-01-01
相关资源
最近更新 更多