【问题标题】:How to remove a subdirectory from the url when forwarding to sudirectory?转发到子目录时如何从 url 中删除子目录?
【发布时间】:2013-07-30 03:35:05
【问题描述】:

在共享服务器上,我不得不从 cpanel 管理域的文档根目录,这很麻烦,而且会耗费大量时间。所以我将所有域重定向到一个目录,比如说root。一个例子:

sd1.domain.com  ---> public_html/web/
sd2.domain.com  ---> public_html/web/
sd1.domain2.com ---> public_html/web/
sd2.domain2.com ---> public_html/web/

当用户浏览这些网站时,我使用 htaccess 规则转发这些网站,例如

RewriteCond %{HTTP_HOST}   ^sd1.(domain1|domain2).com [NC]
RewriteCond %{REQUEST_URI} !^/sd1/.*
RewriteRule   ^(.*)  sd1/$1  [L]

现在这确实将请求转发到不同的文件夹,但之后所有网址都在最后一部分附加了sd1

这是一个插图

sd1.domain.com            ---> sd1.domain.com                 #Works correctly
sd1.domain.com/page1.html ---> sd1.domain.com/sd1/page1.html  # See the word sd1 on the middle

如何从网址中删除文件夹部分??

【问题讨论】:

  • @Nileshpatel,你的意思是什么?
  • 希望您能从中得到帮助。我试过了,但没有成功。
  • 这是您完整的 .htaccess 代码吗?如果不是,请在您的问题中转储您的完整 .htaccess,因为您的代码显然只进行内部转发,并且不应更改浏览器中的 URL。
  • @anubhava,这是完整的转储pastebin.com/vD3tas90

标签: .htaccess url-rewriting


【解决方案1】:

如果我正确理解您的问题,您应该可以通过使用标志 PT(Passthru)来做到这一点,这会导致将重写目标传递回 URL 映射引擎:

RewriteCond %{HTTP_HOST}   ^sd1.(domain1|domain2).com [NC]
RewriteCond %{REQUEST_URI} !^/sd1/.*
RewriteRule   ^(.*)  sd1/$1  [PT,L]

希望对你有帮助。

【讨论】:

  • @Startx,我看到 ngentechnology.com 之前正在重定向到 ngentechnology.com/drupal。现在我看到它仍然在ngentechnology.com 上。我可以测试行为的任何其他网址吗?
  • @Startx,我查看了您的实时站点。正如 anubhava 提到的,问题可能出在 Joomla 或 Drupal 配置设置或重写规则中的任何地方。我不认为可以通过简单的重写规则来解决。您可能需要有权访问您的服务器的系统管理员来帮助进一步调查。
  • @szemain,不,这不是真正的问题,即使像this 这样的简单 HTML 项目,它也会以相同的方式重定向。它没有进一步向下的 htaccess。
  • @Startx,上面的HTML项目确实有没有/clients的链接(如clients.mrnepal.com/about),问题是无法重新映射到clients.mrnepal.com/clients/about。该站点与 Joomla 和 Drupal 的站点相比具有完全不同的问题。当您更改网络托管配置时,即使是简单的 HTML 项目也可能需要更改其基本路径、绝对路径和相对路径。
猜你喜欢
  • 2019-10-03
  • 2012-06-25
  • 1970-01-01
  • 2021-05-24
  • 2013-05-18
  • 2019-03-08
  • 2021-04-01
  • 2015-09-06
  • 1970-01-01
相关资源
最近更新 更多