即使有很多关于这个问题的文章,我也无法让它发挥作用。 我的情况是这样的: 来自一个域,例如english-domain.com我希望将另一个域重写到特定目录中,例如german-domain.de/en。每个域都包含一个连字符。遗憾的是,典型的生成器没有为我提供工作解决方案。例如,以下代码不起作用 RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?english-domain\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ german-domain.de/en/$1 [R=301,L]
如果你们能指出我正确的方向,那将是非常感激的。 谢谢
答案 0 :(得分:0)
这个简单修改过的版本怎么样?
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?english-domain\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ https://german-domain.de/en/$1 [R=301,L]
我想知道你编码的第二个RewriteCond
是否真的是你想要的。它会将重写限制为仅限于特定网址https://english-domain.com/
,而不是仅包含基本/
作为路径组件的网址...如果您要重写所有网址在该主机中,例如https://english-domain.com/foo/bar
,那么您需要删除该条件:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?english-domain\.com$ [NC]
RewriteRule ^(.*)$ https://german-domain.de/en/$1 [R=301,L]
哦,显然你必须确保完全启用htaccess
样式文件的解释并安装重写模块。
一般提示:您应该始终更喜欢将此类规则放在http服务器主机配置中,而不是使用.htaccess
样式文件。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。它们仅作为最后一个选项提供给您无法控制主机配置的情况(阅读:非常便宜的托管服务提供商),或者您有一个依赖于编写自己的重写规则的应用程序(这是一个明显的安全噩梦) )。