Laravel 如何将example.com和example.com/anything重定向到example.com/blog

Laravel 如何将example.com和example.com/anything重定向到example.com/blog,laravel,apache,.htaccess,webserver,Laravel,Apache,.htaccess,Webserver,我想将example.com和example.com/anywhere重定向到example.com/blog。请注意几件事 我参考example.com了解1域 我使用apache作为web服务器 我的文档根目录在apache vhost conf文件中设置为/var/www/html/public(对于laravel应用程序) 我尝试在.htaccess中设置重定向,并使用ApacheVHOST conf文件,但我多次收到重定向错误 有人能帮我完成这件事吗?你可以按自己的路线去做 // we

我想将example.com和example.com/anywhere重定向到example.com/blog。请注意几件事

我参考example.com了解1域

我使用apache作为web服务器

我的文档根目录在apache vhost conf文件中设置为/var/www/html/public(对于laravel应用程序)

我尝试在.htaccess中设置重定向,并使用ApacheVHOST conf文件,但我多次收到重定向错误


有人能帮我完成这件事吗?

你可以按自己的路线去做

// web.php
Route::redirect('/', '/blog');
Route::redirect('/anything', '/blog');

这可能就是您想要的:在http服务器级别上重写:

RewriteEngine on
RewriteRule ^/?$ /blog [R=301]
RewriteRule ^/?anything/?$ /blog [R=301]
如果您所说的“任何内容”实际上是指无论请求的路径是什么,都应该应用重定向,那么应该这样做:

RewriteEngine on
RewriteCond %{REQUEST_URI} !/blog
RewriteRule ^ /blog [R=301]
一开始使用302临时重定向是一个好主意,在确定所有设置都正确后,只需将其更改为301永久重定向。这样可以防止在尝试时出现缓存问题

此实现将在http服务器主机配置或分布式配置文件(“.htaccess”文件)中同样工作。显然,重写模块需要在http服务器中加载,并在http主机中启用。在使用分布式配置文件的情况下,您需要注意在主机配置中启用该文件的解释,并且该文件位于主机的
DOCUMENT\u ROOT
文件夹中


还有一个一般性的注释:您应该总是更喜欢将这些规则放在http服务器主机配置中,而不是使用分布式配置文件(“.htaccess”)。这些分布式配置文件增加了复杂性,通常是导致意外行为的原因,难以调试,而且它们确实降低了http服务器的速度。只有在您无法访问真正的http服务器主机配置(读:真正廉价的服务提供商)或坚持编写自己的规则的应用程序(这显然是一个安全噩梦)的情况下,才提供它们作为最后一个选项

多谢各位!谢谢你的回答。但是我正在寻找一种不修改应用程序的方法,在vhost conf文件或.htaccess.Ok中。没问题,您标记了laravel,所以我提供了laravel解决方案)很幸运。有人会发现你的答案非常有用。你能分享你当前的
.htaccess
,让其他人知道你尝试了什么并给你建议吗?谢谢你的答案。但不幸的是,这对我不起作用。它会在重定向到example.com/blog后创建一个重定向循环。知道这是为什么吗?给定的规则集本身肯定不会导致重定向循环,这正是
RewriteCond
的目的。如果这对您不起作用(您是否多次检查您没有查看缓存的结果?),则必须考虑您没有告诉我们的其他因素。或者你只是不小心改变了我的台词。