我正在建造一个Laravel 项目.该项目本身有一个"遗留"版本,具有完全不同的 struct .它记录了一些用户试图访问在新环境中找不到的文件.

为了快速"修复",我们想要重定向路径,如

  • /media/22044/blablabla.pdf%至/en/press%

最快的解决方案是使用

Redirect 301 /media/22044/blabla.pdf /en/press

但我们希望/media/背后的道路是充满活力的. 我是个新手,不懂.htaccess种东西. 有没有办法做到这一点?

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]

# this one works, but not dynamic
#Redirect 301 /media/2336/blabla.pdf /en/press

# failed experiments
#Redirect 301 (\/media)(.*)$ /en/press
#Redirect 301 ^/media/(.*)$ /en/press
#RewriteRule ^/media/(.*) /en/press [R=301,NC,L]
Redirect 301 /media/(.*) /en/press
</IfModule>

推荐答案

您需要使用mod_reWriteRewriteRule指令(而不是Redirect)before您现有的重写.

例如:

RewriteEngine on

# Redirect "/media/<anything>" to "/en/press"
RewriteRule ^media/ /en/press [R=301,L]

# Rewrite all requests to the "/public" subdirectory
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]

Redirect指令使用简单的前缀匹配,而不是正则表达式.而且还在请求中稍后被处理.

请注意,与Redirect指令不同,RewriteRule pattern匹配的URL路径不是以斜杠开始的.

Laravel相关问答推荐

拉威尔望远镜没有显示请求细节

Laravel:在 PHPUnit 的覆盖率报告中包含文件夹(如果在 app/ 文件夹之外)?

如何在自定义表单请求中获取错误验证数据

从主类别模型 laravel 中获取子类别翻译

在 laravel 4.2 中,用户 'root'@'localhost' 的 Laravel 访问被拒绝(使用密码:YES)

laravel url 验证变音符号

如何使用 Laravel 模型访问数据库视图?

Laravel:每当我返回一个模型时,总是返回一个与它的关系

Laravel 4 的 Cron 作业(job)

找不到列:1054字段列表中的未知列0-Laravel-我的代码中的任何地方都没有0列

Laravel 5 文件下载:stream() 或 download()

WhereNotExists Laravel Eloquent

用于集合的 Laravel 5.5 API 资源

Laravel php artisan 服务于模仿 HTTPS

Laravel 5 - 判断日期是否是今天

Mac OS X 需要 Mcrypt PHP 扩展

Laravel 检测手机/平板电脑并加载正确的视图

在我的编辑器中管理上传文件的最佳方式?

Laravel 4 - 文件上传

错误:找不到模块 'webpack/lib/rules/DescriptionDataMatcherRulePlugin' 需要堆栈: