我有基于grav-site.pl CMS的多语言站点和两个域: grav-site.pl和grav-site.com
我想redirect:
grav-site.pl/en – > grav-site.com grav-site.com/pl – > grav-site.pl 在grav的基础上,我发现解决scheme应该工作,所以我把这个添加到我的.htaccess
## Begin - Multilanguage Setup RewriteRule ^en/?$ "http://grav-site.com" [R=301,L] RewriteRule ^pl/?$ "http://grav-site.pl" [R=301,L] # handle sub pages, exclude admin path RewriteCond %{REQUEST_URI} !(admin) [NC] RewriteRule ^en/(.*)$ "http://grav-site.com/$1" [R=301,L] RewriteCond %{REQUEST_URI} !(admin) [NC] RewriteRule ^pl/(.*)$ "http://grav-site.pl/$1" [R=301,L] # End - Multilanguage Setup
但是当我去http://grav-site.com/pl nothings happend(没有redirect)和CMS引擎删除/pl
如何更改.htaccess条目以实现适当的redirect?
PSrest的.htaccess https://github.com/getgrav/grav/blob/develop/webserver-configs/htaccess.txt
我在
<IfModule mod_rewrite.c>...</IfModule>之后添加来自上面的条目,只是在文件结尾
这似乎是你的问题的主要原因。 这些指令(redirect)需要在文件的开头附近,在你现有的重写之前 – 否则,它们将不会被处理。
“前端控制器”(在## Begin - Index开始的文件中间)捕获所有的请求,并通过index.php (你的“前端控制器”)发送它们,任何遵循这个指令的mod_rewrite指令都不可能被处理,除非请求是针对物理文件的。
一般来说, 外部redirect应该总是在内部重写之前进行。
出于同样的原因,我会质疑你的“安全”指令的位置(在开始## Begin - Security ),这也跟随你的前端控制器。 这实际上可能是正确的 – 因为他们只处理存在的文件。 然而,作为一般规则,阻塞/安全指令通常会靠近文件的顶部(甚至在redirect之前)。
取消您的.htaccess文件中的RewriteBase行的注释: https://github.com/getgrav/grav/blob/develop/webserver-configs/htaccess.txt
如何将“www.example1.com”redirect到“www.example2.com”
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www.example1.com [NC] RewriteRule ^(.*) http://www.example2.com/$1 [L,R=301]
从“www.example.com”redirect到“example.com”,反之亦然
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www.example.com$ [NC] RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
反之亦然
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^example.com [NC] RewriteRule ^(.*) http://www.example.com/$1 [L,R=301]
将所有不存在的子域redirect到网站:
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^(.*).example.com [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=permanent]
将所有的网站请求redirect到特定的网页:
RewriteEngine On RewriteBase / RewriteRule ^(.*)$ http://example.com/desired_page/ [L,R=permanent]