当从 public URL 中单击时,我希望我的“/”链接指向特定的子文件夹

I'd like my "/" links to point to a specific subfolder when clicked from my public URL

我正在和一些朋友一起做一个项目,他们需要我正在开发的一个小网站。

它使用 Wamp 服务器托管在我的计算机上,我是这样配置的:

以这种方式工作,当我使用我的虚拟主机 URL 时,所有指向 //something/else/ 的相关链接都有效,但当我使用 public URL。 /models/ 将重定向到 http://example.ddnsservice.org/models/ 而不是 http://example.ddnsservice.org/projectfolder/models/.

我尝试在 projectfolder 中的 .htaccess 文件上使用 RewriteRule,遵循这里提出的几种解决方案,但似乎没有任何效果,所以我开始认为我有很深的对托管网站应该是什么样子的误解。我最后尝试的是:

RewriteEngine on
RewriteCond "%{HTTP_HOST}" "^(.*)example.ddnsservice.org(.*)$"
RewriteRule ^/$ ^/projectfolder/$

我没有尝试让 http://example.ddnsservice.org/ 指向 projectfolder,因为我有时会分享其他项目,因为我不知道该怎么做。

我对 atm 很迷茫,真的不知道从哪里解决这个问题了。

感谢大家阅读我的文章并抽出宝贵的时间。

--- 编辑 ---

有关更多详细信息,这些链接弄乱了我。或者我在惹他们,不能说! (我刚刚让 <a> 标签)

  <a href="/?action=session_destroy">session_destroy();</a>
  <a href="http://localhost">LOCALHOST</a>
  <a href="/">ROOT</a>
  <a href="/admin/">ADMIN</a>
  <a href="/admin/?action=testPage">TEST_PAGE</a>
  <a href="/?action=empty_session_key">$_SESSION['key']="";</a>
  <a href="?">EMPTY GET</a>
  <a href="?key=<?= $key['display_key'] ?>">KEY1</a>
  <a href="?key=<?= $key['forum_key'] ?>">KEY2</a>

阅读您的回答后我意识到自己陷入了困境。我不需要同时托管多个项目,因此我可以将 Apache 配置为默认指向我的 projectfolder。我也非常感谢@BURN-ADDiCT 的个性化教程,因为如果我理解规则正确,我无法通过评论来做到这一点。

我还意识到,我选择在 /admin/index.php 中分离对我的数据库的一些受限操作可能是个坏主意,这就是导致我使用 website/server 根的亲属链接的原因,并且我'我会改变这个。

只要我有足够的空闲时间,我就会处理这个问题,但现在问题已由 apache 配置解决方案解决。谢谢大家抽出时间。

不要在 link 中使用 / 作为前缀。 假设您的服务器具有如下文件夹结构:

htdocs (public-html)
  |- projectfolder
       |- images
            - logo.png 
            - photo.jpeg
       - index.html

所以您想 link 从索引到另一个文件。例如,在您的问题中是模型,或者在上述情况下是图像。在这种情况下,您需要 link 到 "images/logo.png"。由于您的索引已经位于项目文件夹中,它将从此位置搜索到文件夹 images,然后进入该文件夹并查找 logo.png。所以 url 将转换为 http://example.ddnsservice.org/projectfolder/images/logo.png

如果您使用 "/images/logo.png",则表示它需要向上移动一个文件夹并从那里开始搜索。由于您的索引位于项目文件夹中,它会将文件夹向上移动到 htdocs(或 public-html 或其他内容)并从此位置搜索到文件夹 images 然后尝试进入文件夹并寻找logo.png。因此 url 将转换为 http://example.ddnsservice.org/images/logo.png 并且该文件夹是错误的文件夹,在这种情况下它甚至不存在。

should solve your main problem. It's a matter of relative referencing。我现在正在编辑我的答案,以帮助解决您 post 的其他部分问题,因为我现在对您不理解的内容有了更好的理解。



I didn't try to make http://example.ddnsservice.org/ point to the projectfolder because I sometimes share others projects and because I don't know how to do it.

如果您想这样做,您需要更改 Apache 默认设置,如 this answer:

这将是特定于平台的事情,但您基本上需要找到 httpd.conf 文件,由于您使用 Wamp,该文件可能位于 wamp/apache2/conf/ 下。 在该文件中,找到 DocumentRoot 设置并将“/projectfolder”附加到该值。您可能会发现它是 c:\wamp\htdocs,然后将其更改为 c:\wamp\htdocs\projectfolder。 对 <Directory "c:\wamp\htdocs"> 设置进行相同的更改(应该在下一行)。



I sometimes share others projects

为此,您可以 set up multiple virtual hosts。我自己没有用过这个所以我不会多说。如果您有兴趣将 projectfolder 设置为根目录,并且稍后想要共享一个不同的项目(也作为根目录),我只分享这个。

如果您不需要这些站点同时 运行,那么您可以每次 use symbolic links for (since I use Linux, they're easy to do), but on Windows, you might want to either use aliases to make the "projectfolder" point to a different folder,或者,只在“projectfolder”中保留您要服务的项目的副本”。 在我看来,后者更方便。



I've tried to use RewriteRule on the .htaccess file in projectfolder following several solutions proposed here but nothing seemed to work so I begin to think that I have a deep misconception of what hosting a website should look like.

这不是解决此问题的好方法,即使它确实与您的问题有关。

根据 the Apache docs(在“何时(不)使用 .htaccess 文件”部分下):

you should only use .htaccess files when you don't have access to the main server configuration file.

它进一步说:

in general, use of .htaccess files should be avoided when possible. Any configuration that you would consider putting in a .htaccess file, can just as effectively be made in a <Directory> section in your main server configuration file.


我希望这会有所帮助,即使问题只是 relative referencing