【问题标题】:htaccess again - special url rewrite to subfolderhtaccess 再次 - 特殊 url 重写到子文件夹
【发布时间】:2016-05-19 15:53:17
【问题描述】:

我希望有人能帮助我,因为我被这个困住了:

域名 - test.site.com 文档根 == /www/test 位于 /www/test/web 的所有内容 (CMS) 我在地址栏中输入时需要: 1) test.site.com/* - 网站从 /www/test/web 打开,地址栏保持 URL "test.site.com/*"

2) 输入 test.site.com/web/* - 相同的行为 - 网站从 web 打开并且 URL 更改为“test.site.com/*”

3) 异常 - 类型 test.site.com/folder1 - 从 /www/test/folder1 打开页面

我可以通过这种方式重定向到“web”子文件夹:

.htacesss 在 /www/test:

RewriteCond %{HTTP_HOST} ^test.site.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.test.site.com$
RewriteCond %{REQUEST_URI} !web/
RewriteRule (.*) /web/$1 [L]

但它仅适用于 1) 要求。 2)和3)不起作用。 至于 3) 我可以看到 每个 请求都将被重定向到“web”子文件夹。

【问题讨论】:

    标签: apache .htaccess redirect rewrite subdirectory


    【解决方案1】:

    对于您的第二个要求,您需要一个额外的规则来将 /web 重定向到 /root。

    类似这样的:

    RewriteCond %{THE_REQUEST} /web/([^\s]*) [NC]
    RewriteRule ^ /%1 [NC,L,R]
    

    上述规则将匹配任何以 /web/foo 开头的请求并将请求重定向到 /foo。

    第三次,你需要一个 RewriteCond 来从 RewriteRule 中排除 /folder1。

    RewriteCond %{REQUEST_URI} !^/folder1
    

    重写

    RewriteCond %{THE_REQUEST} /web/([^\s]*) [NC]
    RewriteRule ^ /%1 [NC,L,R] 
    RewriteCond %{HTTP_HOST} ^(www\.)?test.site.com$ [NC]
    RewriteCond %{REQUEST_URI} !^/folder1        RewriteRule ((?!web).*) /web/$1 [NC,L]
    

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 2012-12-12
      • 2012-08-20
      • 2013-12-31
      • 2014-03-20
      • 2020-01-08
      • 2015-09-27
      • 2021-10-17
      • 2015-04-22
      相关资源
      最近更新 更多