【发布时间】:2014-08-22 05:24:23
【问题描述】:
我有一个使用 Laravel 编写的应用程序,它会生成动态子域。因此,我有一个通配符(*)路由机制。由于我在使用 SSL 时遇到了一些复杂情况,我需要将 www.example.com 路由重定向到裸域 (example.com),最好使用 RewriteRules 在 Apache .conf 文件中。
我已经进行了一些搜索并看到了一些示例,但我所看到的大部分内容要么将 all 子域重定向到裸域(这破坏了我上面提到的子域功能),要么与我尝试做的相反(将裸域重定向到 www),这会在我的许多现有路由中导致重定向循环。
这是可以使用 Apache 完成的吗?
编辑:
我想我修好了。对于其他有类似问题的人,我在/etc/apache2/sites-enabled/000-default.conf 中使用了以下规则:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1$1 [R=301,L]
这会将任何以 www 开头的 URL 重定向到其裸对应的 URL,这具有从子域中剥离 www 的额外好处(因此,例如,www.test.example.com 被重定向到 test.example.com,这很棒(尽管不必要)因为www.{subdomain}.example.com 不是我的应用程序中定义的路线,无论如何都不会工作。
【问题讨论】:
-
http://%1$1应该是http://%1/$1。否则www.example.com/directory/将变为example.comdirectory/。我会自己进行编辑,但它只有一个字符。
标签: apache .htaccess mod-rewrite