HTACCESS:将域根目录更改为子目录

发布于 2024-11-07 02:51:53 字数 1087 浏览 2 评论 0原文

我正在尝试使用子目录作为我的域之一的根文件夹。使用 .htaccess,我使用 mod_rewrite 来完成工作。这是我已经拥有的代码:

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/domain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domain/$1

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(/)?$ /domain/index.php [L]

这完成了工作,但还没有完全完成。例如:

如果我转到 http://domain.com/,它会显示 index.phpdomain 文件夹中。如果我转到 http://domain.com/test/,它将显示以下内容(或 403) test 文件夹。 但是如果我转到http://domain.com/test(使用快捷方式,甚至显示文件夹)我被重定向到 http://domain.com/domain/test/。

这是不应该发生的。如果有的话,它要么从 .htaccess 执行掩码(如果正在使用测试),要么应该转到 http://domain .com/test/。我试图找到解决这个问题的方法,但我做不到。所以我寻求你的帮助! :)

非常感谢任何和所有的帮助。

I'm trying to use a sub-directory as the root folder for one of my domains. Using .htaccess, I use mod_rewrite's to get the job done. Here's the code I already have:

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/domain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domain/$1

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(/)?$ /domain/index.php [L]

This gets the job done, but not entirely. For example:

If I goto http://domain.com/, it displays index.php from inside the domain folder. If I goto http://domain.com/test/, it will display the contents (or 403) of the test folder. BUT if I goto http://domain.com/test (for use of shortcuts, or even to display the folder) I get redirected to http://domain.com/domain/test/.

That is not supposed to happen. If anything, it either does a mask from the .htaccess (if test is being used) or should just goto http://domain.com/test/. I have tried to figure out a way around this, and I cannot. So I am seeking your help! :)

Any and all help is greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

比忠 2024-11-14 02:51:53

试试这个:它有点粗糙,但应该做你想做的事。有一点混乱:我尝试做的一些事情将取决于您的 RewriteBase (您可能需要删除一个或多个 / 字符)。

我基本上添加了一个初始块,专门查找 /domain/ 文件夹中不以尾部斜杠结尾的目录,并添加了一个。让我知道它是否有效。

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/domain/
RewriteCond /domain/%{REQUEST_URI} -d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /domain/$1/

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/domain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domain/$1

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(/)?$ /domain/index.php [L]

Try this: its a little crude, but should do what you want. There is a little bit of confusion: some of what I've tried to do will depend on your RewriteBase (you might need to remove one or more / characters).

I've basically added an initial block that specifically looks for directories within your /domain/ folder that don't end with a trailing slash and added one. Let me know if it works at all.

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/domain/
RewriteCond /domain/%{REQUEST_URI} -d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /domain/$1/

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/domain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domain/$1

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(/)?$ /domain/index.php [L]
金兰素衣 2024-11-14 02:51:53

评论者是对的,如果您想使用子目录作为我的域之一的根文件夹,只需在您的apache虚拟主机配置中配置它(DocumentRoot)。

The commenter is right, if you want to use a sub-directory as the root folder for one of my domains , just configure it in you apache virtual host configuration (DocumentRoot).

笑看君怀她人 2024-11-14 02:51:53
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(.*)$ /domain/$1/ [L]

上面的代码成功地完成了我想要它做的一切。

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(.*)$ /domain/$1/ [L]

The above code successfully does everything I wanted it to do.

秋日私语 2024-11-14 02:51:53

像这样使用 RewriteBase:

RewriteBase /f2f/f2fweb

Use RewriteBase like this:

RewriteBase /f2f/f2fweb

独自←快乐 2024-11-14 02:51:53

对我有帮助的是我主机上的 auto.htaccess 生成器!!!!

DirectoryIndex index.php
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://(www\.)?domain.com/TEST//.*$ [NC]
RewriteRule \.(js|css|jpg|gif|png|bmp|mp4|3gp|m4a|m4r|aac|mp3|ogg|wave)$ - [F]

What helped me is auto.htaccess generator on my host!!!!

DirectoryIndex index.php
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://(www\.)?domain.com/TEST//.*$ [NC]
RewriteRule \.(js|css|jpg|gif|png|bmp|mp4|3gp|m4a|m4r|aac|mp3|ogg|wave)$ - [F]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文