【问题标题】:htaccess remove subdirectory from urlhtaccess 从 url 中删除子目录
【发布时间】:2012-06-25 17:20:21
【问题描述】:

我已经阅读了基于此主题的多个线程,但没有一个规则有效,所以我确定我做错了什么。

我的 /var/www 中有以下结构

main domain folders that redirects to domain.com
folder1 that redirects to domain1.com
folder2 that redirects to domain2.com

在文件夹 2 内我还有 3 个子目录

folder2/subdirectory1
folder2/subdirectory2
folder2/subdirectory3

这些应该重定向到:

www.domain2.com/subdirectory1
www.domain2.com/subdirectory2
www.domain2.com/subdirectory3

但不是那样,它还会在 url 中显示文件夹 2,因此它正在列出

www.domain2.com/folder2/subdirectory1
www.domain2.com/folder2/subdirectory2
www.domain2.com/folder2/subdirectory3

我有两个 .htaccess:一个在根文件夹中,一个在文件夹 2 中

来自根文件夹的htaccess

Options +FollowSymLinks 
RewriteEngine On
RewriteBase /

ReWriteCond %{HTTP_HOST} domain1.com
ReWriteCond %{REQUEST_URI} !folder1/
ReWriteRule ^(.*)$ folder1/$1 [L] 

ReWriteCond %{HTTP_HOST} domain2.com
ReWriteCond %{REQUEST_URI} !folder2/
ReWriteRule ^(.*)$ folder2/$1 [L]

来自文件夹 2 的 htaccess

RewriteEngine On
RewriteBase / 

ReWriteCond %{HTTP_HOST} domain2.com/subdirectory1
ReWriteCond %{REQUEST_URI} !subdirectory1/
ReWriteRule ^(.*)$ subdirectory1/$1 [L] 

ReWriteCond %{HTTP_HOST} domain2.com/subdirectory2
ReWriteCond %{REQUEST_URI} !subdirectory2/
ReWriteRule ^(.*)$ subdirectory2/$1 [L] 

ReWriteCond %{HTTP_HOST} domain2.com/subdirectory3
ReWriteCond %{REQUEST_URI} !subdirectory3/
ReWriteRule ^(.*)$ subdirectory3/$1 [L]

希望我能最终解决这个问题

【问题讨论】:

  • 您在文件夹 2 中的重写规则没有做任何事情:ReWriteCond %{HTTP_HOST} domain2.com/subdirectory1 永远不会匹配任何内容。 %{HTTP_HOST} 只包含域部分,不包含子目录。

标签: .htaccess url rewrite subdirectory


【解决方案1】:

我认为你应该使用重定向标签 [R] 进入文件夹 2 .htaccess RewriteRule

这边:

RewriteEngine On
RewriteBase / 

ReWriteCond %{HTTP_HOST} domain2.com/subdirectory1
ReWriteCond %{REQUEST_URI} !subdirectory1/
ReWriteRule ^(.*)$ subdirectory1/$1 [R] 

ReWriteCond %{HTTP_HOST} domain2.com/subdirectory2
ReWriteCond %{REQUEST_URI} !subdirectory2/
ReWriteRule ^(.*)$ subdirectory2/$1 [R] 

ReWriteCond %{HTTP_HOST} domain2.com/subdirectory3
ReWriteCond %{REQUEST_URI} !subdirectory3/
ReWriteRule ^(.*)$ subdirectory3/$1 [R]

【讨论】:

  • 我认为您需要在根文件夹上进行另一个重定向:ReWriteRule ^(.*)$ folder2/$1 [R] 试试看
  • 我做到了,不幸的是还是一样
  • 测试一下:将重定向保留在根文件夹中,然后将重写规则删除到folder2文件夹中。
猜你喜欢
  • 2021-06-24
  • 2020-01-09
  • 2019-10-03
  • 2011-09-24
  • 2012-03-19
  • 1970-01-01
  • 2013-05-18
  • 2020-05-11
  • 2020-01-31
相关资源
最近更新 更多