也许有人可以帮忙。我尝试重定向:
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]