重定向 (htaccess) example.com/myproject 到另一个子文件夹,但保留原始 URL



也许有人可以帮忙。我尝试重定向:

www.example.com/myproject

www.example.com/projects/myproject

但我希望保留原始网址。

我当前的文件树:

"/" 网站空间根目录

"/sites"此目录将通过键入 www.example.com 来调用

"/sites/projects/myproject" 在此文件夹中,如果用户在 URL 字段中键入"www.example.com/myproject",我想重定向用户

我试过什么

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?example.com/myproject$ [NC]
RewriteRule ^ http://example.com/projects/myproject%{REQUEST_URI} [R=301,L]

如果我打电话给"http://example.com/projects/myproject"它会起作用。但不是"http://example.com/myproject"。

参数也应该使用原始URL,如"?site=register"或类似的东西。


编辑

我现在自己找到了解决方案:

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^myproject/?$ /projects/myproject/%1 [QSA,L]
</IfModule>

这工作正常并保留原始 URL。

一件事。是否可以匹配文件调用?方法:

工作网址:example.com/projects/myproject/css/main.css 具有上述重写条件的所需 URL:example.com/myproject/css/main.css

目前它只向我显示索引.php但在URL中也保留"/myproject/css/main.css"。我想调用此文件。js,pdf,less等也是如此。

%{HTTP_HOST}只包含主机名,而不是REQUEST_URI,因此您无法测试其中是否存在myproject

我想这样的事情就足够了:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^myproject/(.+) /projects/myproject/%1 [R=301,L,QSA]

相关内容

最新更新