当从 public URL 中单击时,我希望我的“/”链接指向特定的子文件夹
I'd like my "/" links to point to a specific subfolder when clicked from my public URL
我正在和一些朋友一起做一个项目,他们需要我正在开发的一个小网站。
它使用 Wamp 服务器托管在我的计算机上,我是这样配置的:
C:\wamp64\www\projectfolder\
是我的项目所在的文件夹。
http://example.online/
是指向我用来在本地访问我的网站的 projectfolder
的虚拟主机。
http://example.ddnsservice.org/projectfolder/
是 URL 在我需要分享时访问我的网站。
http://example.ddnsservice.org/
即指向默认的 wampserver 页面。
以这种方式工作,当我使用我的虚拟主机 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。
我正在和一些朋友一起做一个项目,他们需要我正在开发的一个小网站。
它使用 Wamp 服务器托管在我的计算机上,我是这样配置的:
C:\wamp64\www\projectfolder\
是我的项目所在的文件夹。http://example.online/
是指向我用来在本地访问我的网站的projectfolder
的虚拟主机。http://example.ddnsservice.org/projectfolder/
是 URL 在我需要分享时访问我的网站。http://example.ddnsservice.org/
即指向默认的 wampserver 页面。
以这种方式工作,当我使用我的虚拟主机 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
并且该文件夹是错误的文件夹,在这种情况下它甚至不存在。
I didn't try to make
http://example.ddnsservice.org/
point to theprojectfolder
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。