240 .htaccess mod-rewrite redirect
想要得到
www.example.com
Run Code Online (Sandbox Code Playgroud)
直接去
www.example.com/store
Run Code Online (Sandbox Code Playgroud)
我已经尝试了多位代码而没有工作.
我尝试过的:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^(.+)\www.example\.com$
RewriteRule ^/(.*)$ /samle/%1/$1 [L]
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
小智 267
您可以使用重写规则使用^ $表示根并将其重写到/ store目录,如下所示:
RewriteEngine On
RewriteRule ^$ /store [L]
Run Code Online (Sandbox Code Playgroud)
Dio*_*ung 134
我没有提到这个,我很惊讶:
RedirectMatch ^/$ /store/
Run Code Online (Sandbox Code Playgroud)
基本上,它重定向根,只重定向根URL.答案来自这个链接
Gum*_*mbo 109
试试这个:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteRule ^$ store [L]
Run Code Online (Sandbox Code Playgroud)
如果您想要外部重定向(导致访问浏览器显示重定向的URL),也可以在R
那里设置标记:
RewriteRule ^$ /store [L,R=301]
Run Code Online (Sandbox Code Playgroud)
Jag*_*age 79
这是我用来重定向到子目录的内容.这样做是不可见的,并且仍允许通过匹配现有文件或其他任何内容的请求.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?site.com$
RewriteCond %{REQUEST_URI} !^/subdir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subdir/$1
RewriteCond %{HTTP_HOST} ^(www.)?site.com$
RewriteRule ^(/)?$ subdir/index.php [L]
Run Code Online (Sandbox Code Playgroud)
使用您的值更改site.com和subdir.
sta*_*een 25
要设置从root到子文件夹的不可见重定向,可以在/root/.htaccess中使用以下RewriteRule:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/subfolder
RewriteRule ^(.*)$ /subfolder/$1 [NC,L]
Run Code Online (Sandbox Code Playgroud)
上面的规则将在内部重定向浏览器:
至
和
至
而浏览器将保留在根文件夹中.
gab*_*ous 20
另一种方法是,如果要重写URL并隐藏原始URL:
RewriteEngine on
RewriteRule ^(.*)$ /store/$1 [L]
Run Code Online (Sandbox Code Playgroud)
有了这个,如果您输入例如类型http://www.example.com/product.php?id=4
,它将透明地打开文件,http://www.example.com/store/product.php?id=4
但不向用户显示完整的URL.
小智 14
这似乎是最简单的解决方案:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule (.*) http://www.example.com/store [R=301,L]
Run Code Online (Sandbox Code Playgroud)
我正在使用其他一些解决方案获得重定向循环.
我不明白你的问题......
如果要将每个请求重定向到子文件夹:
RewriteRule ^(.*)$ shop/$1 [L,QSA]
http://www.example.com/* -> wwwroot/store/*
Run Code Online (Sandbox Code Playgroud)
如果要重定向到具有域名的子文件夹
RewriteCond %{HTTP_HOST} ([^\.]+\.[^\.]+)$
RewriteRule ^(.*)$ %1/$1 [L,QSA]
http://www.example.com/* -> wwwroot/example.com/*
Run Code Online (Sandbox Code Playgroud)
我发现为了避免循环重定向,重要的是限制重定向到根目录的范围.我会用过:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule (.*) http://www.example.com/store [R=301,L]
Run Code Online (Sandbox Code Playgroud)
大多数上述解决方案都是正确的,但它们都缺少重定向的透明度.
就我而言,在访问www.example.com时,我希望重定向到子目录/商店,但不会将URL更新到www.example.com/store.(我想要的只是获取该目录的页面代码).如果是这种情况,下面的解决方案可以完美运行.
RewriteEngine on
RewriteCond %{HTTP_HOST} example\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ /store/$1 [L]
Run Code Online (Sandbox Code Playgroud)
来源:http://wiki.dreamhost.com/Transparently_redirect_your_root_directory_to_a_subdirectory
也可以为此目的使用重定向
Redirect 301 / www.example.com/store
Run Code Online (Sandbox Code Playgroud)
或用于映射的别名
Alias / /store
Run Code Online (Sandbox Code Playgroud)
编辑: mod_alias仅适用于httpd.conf。
提价
小智 5
实现这一目标的可能解决方案有两种:\n1. 在根文件夹中创建一个.htaccess
文件,如下所示(只需将 example.com 和 my_dir 替换为相应的值):
<IfModule mod_rewrite.c>\nRewriteEngine on\nRewriteCond %{HTTP_HOST} ^(www.)?example.com$\nRewriteCond %{REQUEST_URI} !^/my_dir/\nRewriteCond %{REQUEST_FILENAME} !-f\nRewriteCond %{REQUEST_FILENAME} !-d\nRewriteRule ^(.*)$ /my_dir/$1\nRewriteCond %{HTTP_HOST} ^(www.)?example.com$\nRewriteRule ^(/)?$ my_dir/index.php [L] \n</IfModule>\n
Run Code Online (Sandbox Code Playgroud)\n\n使用 RedirectMatch 仅将根 URL \xe2\x80\x9c/\xe2\x80\x9d 重定向到另一个文件夹或 URL,
\n\nRedirectMatch ^/$ http://www.example.com/my_dir
归档时间: |
|
查看次数: |
502118 次 |
最近记录: |