【问题标题】:htaccess one url to subfolder on domainhtaccess 一个 url 到域上的子文件夹
【发布时间】:2015-09-29 10:07:23
【问题描述】:

我试图在 htacces 配置中得到这个结果

如果 (www.domain.de/some/projects/) 在 webspace root/some/subdir/projetcs/index.php 上执行 别的 在 webspace root/index.php 上执行

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/some/subdir/projects/.*$
RewriteRule ^(.*)$ /some/subdir/projects/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]

我只希望将 1 个链接重定向到网络空间上的子目录,希望有人可以帮助我,我现在正在尝试超过 1 天。

【问题讨论】:

  • 我怎样才能实现在子文件夹中加载另一个 php 脚本然后 index.php?喜欢
  • RewriteRule ^ /some/subdir/projects/web/app.php [L,R=301]

标签: .htaccess mod-rewrite rewrite


【解决方案1】:

第一节在几个方面是错误的:

  1. 您期望的请求(一些/项目)尚未在条件下进行测试,而不是您要重写的请求。

  2. 由于您使用的是 .htaccess 样式语法,因此您正在处理 relative 路径,因此您不能测试前导斜杠 (/)。

我想这就是你要找的:

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/some/projects
RewriteRule ^ /some/subdir/projects [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ /index.php [L,R=301]

我还添加了R 标志来强制外部重定向,这在我看来是你想要做的,尽管我可能错了。

注意:这不考虑第一个块中实际请求的项目,因为您问题中的描述没有这样说。

【讨论】:

  • url不匹配,执行正常的index.php
  • RewriteCond %{REQUEST_URI} ^/some/projects RewriteRule ^ /some/projects [L,R=301] 这有效
  • @Wykk 好的,尽管对我来说这听起来像您使用.htaccess 样式文件,正如您在问题中所述,但在您的http 服务器中有这些规则主机配置。而且我无法理解您现在指定的 RewriteRule。我会说它确实 not 重写,因为它是对同一路径的重写,这应该会导致无限循环......
  • 嗯,我使用 .htaccess 文件,现在重写工作。没有循环可看。
  • @Wykk 啊,对不起,我的错:我把 REQUEST_URIFILE_PATH 混淆了。后者是相对的,REQUEST_URI 显然是绝对的,你曾经并且就在那里。但是我仍然不明白您现在提出的RewriteRule。对我来说,这与您在问题中的要求相矛盾:将/some/projects 重写为/some/subdir/projetcs。我看不到您按照上面评论中发布的规则这样做。但是好吧,如果它适合你... :-) 玩得开心!
【解决方案2】:

Arkascha 我的 .htaccess 上有这个

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/some/projects
RewriteRule ^ /some/projects [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ /index.php [L,R=301]

但现在我有一个问题,所有的工作都只是链接:www.domain.de/some don't work coz 没有 indes,我想从 root/index 获取索引,因为里面有一个带有链接的 cms。

如果我继续下去

www.domain.de/some/projects

我想拿来

根/一些/项目

因为这个链接我有一个框架应该只显示这个链接,如果它是另一个链接,那么

“www.domain.de/some/projects”

我想得到

根目录/index.php

来自网络空间。

我希望你现在能理解我并且可以帮助我或其他人,我今天需要完成我的项目,这不起作用;(

编辑: 我的 htaccess 现在只有这个:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ /index.php [L]

这会执行两个链接:www.domain.de/some/projects 和所有其他链接,除了 www.domain.de/some.

在 root/some on webspace 中没有 index.php 这就是他告诉我权限拒绝的原因。

错误:

禁止

您无权访问此服务器上的 /some/。

【讨论】:

  • 对不起,如果你想问什么,你不应该发布答案。
  • 另外:我要说一些很奇怪的地方:将/some/projects 重写为/some/projects 将创建一个无限循环。为什么不应该呢?除了它完全没有意义之外。
  • 这里的描述很模糊,很难理解。 也许你实际上问的是/some应该被重写吗?但我只能猜测,因为你非常模糊。 “链接:www.domain.de/some don't work”是什么意思? “不工作”从未帮助任何人随时随地解决问题。在您的问题中准确,否则无法提供帮助。对不起。
  • 我认为问题只是:我想获取根网站空间上 index.php 的所有链接。但只有链接:www.domain.de/some/projects 应该获取 root/some/projects/index.php。对不起我的英语不好,我真的想解释我的问题。如果我执行链接 www.domain.de/some 我收到此服务器错误:禁止您无权访问此服务器上的 /some/。
  • 啊,所以你得到一个错误?你为什么不在你的问题/答案中这么说?这不是语言完美的问题,请记住,您始终必须以明确的方式指定所有相关信息。其他人无法猜测或查看您的系统。关于错误本身:它表明您的文件权限拒绝访问该文件夹。问题是是否会因为/some 重写为/index.php(它显然应该根据规则)或者索引脚本本身尝试访问该文件夹中的内容但被否认。只有你自己知道。
猜你喜欢
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多