Scu*_*Kay 1 .htaccess redirect
在我的一个项目中,我正在尝试使用.htaccess重定向.我正在使用这样的重定向:
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
Run Code Online (Sandbox Code Playgroud)
但是,现在我想为重写规则添加一个例外.我希望http://example.com/admin/以相同的方式重定向,仅限于不同的目录.所有其他流量仍应转到公共目录.所以我添加了这样的重写条件:
RewriteCond %{REQUEST_URI} !/admin/
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
Run Code Online (Sandbox Code Playgroud)
这没有做到这一点.我仍然被重定向到公用文件夹.我也试过这个:
RewriteRule ^admin$ admin/ [L]
RewriteRule admin(.*) admin/$1 [L]
RewriteCond %{REQUEST_URI} !/admin
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
Run Code Online (Sandbox Code Playgroud)
这只会让事情变得更糟.我现在得到500内部服务器错误.
我现在一直在搜索几个小时,而且我有点厌倦了找到如何为某个文件夹添加例外的示例,但是没有显示如何将此流量重定向到另一个文件夹.你能告诉我我做错了什么,或者我可以尝试哪种其他方法?
A RewriteCond仅适用于其正下方的规则.换句话说,在您的示例中,它仅适用于空路径规则.RewriteCond向下移动一个档位,它会更好地工作.
RewriteRule ^$ public/ [L]
RewriteCond %{REQUEST_URI} !/admin/
RewriteRule (.*) public/$1 [L]
Run Code Online (Sandbox Code Playgroud)
另外,我找到了你的规则
RewriteRule admin(.*) admin/$1 [L]
Run Code Online (Sandbox Code Playgroud)
奇怪的.类似的URL /adminsomething将被重写/admin/something,我认为这不是你想要的.
此外,我有一种预感,你很难用重定向重写.重写是一种规则,可以在内部重写请求并以不同方式进行解释.重定向是一种规则,它会告诉访问者的浏览器转到不同的地址.你要去哪一个?
重定向的magic关键字是R=301指使用http代码301 Moved Permanently重定向.例如,您可能想尝试......
# This first rule is actually redundant in this case so skip it...
#RewriteRule ^$ public/ [R=301,L]
RewriteCond %{REQUEST_URI} !/admin
RewriteRule (.*) public/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3416 次 |
| 最近记录: |