在.htaccess我已经:
RewriteRule ^(.*)/(.*.html)(\?.*)?$ /scripts/engine.php?path=$1/$2 [QSA,L,PT]
RewriteRule ^(.*)/$ /scripts/engine.php?path=/$1/ [QSA,L,PT]
RewriteRule ^$ /scripts/engine.php?path=/ [QSA,L,PT]
我想添加
的重定向<prefix>.<domain>.com to <prefix>.<domain>.com/<folder>
如何在遵守先前规则的同时做到这一点
------感谢谁回答了
感谢 它按照这个顺序排列
RewriteCond %{HTTP_HOST} ^prefix1\.domain\.com
RewriteCond %{REQUEST_URI} !^/edt_oracle_awr/
RewriteCond %{REQUEST_URI} !^/edt_mysql_slow/
RewriteCond %{REQUEST_URI} !^/edt_sybase_checkmep/
RewriteRule ^(.*)$ http://prefix2.domain.com/folder/$1 [R=301,L,QSA]
RewriteRule ^(.*)/(.*.html)(\?.*)?$ /scripts/engine.php?path=$1/$2 [QSA,L,PT]
RewriteRule ^(.*)/$ /scripts/engine.php?path=/$1/ [QSA,L,PT]
RewriteRule ^$ /scripts/engine.php?path=/ [QSA,L,PT]
如何隐藏重定向?浏览器将显示prefix1.domain.com而不循环
答案 0 :(得分:0)
在mod_rewrite中有两个概念,名为redirect和internal rewrite。
<强>重定向强>
Mod_rewrite可以将请求从a重定向到b。这由规则背后的[R]
标志表示。如果用户请求,例如http://foo.example.com
,您可以将其重定向到http://bar.example.com
。这样做的是,您告诉客户端页面已移至http://foo.com
并且他们应该将请求重做到该URL。它会在地址栏中显示http://foo.com
。
内部重写
如果要显示的文件位于同一文件系统中,则Mod_rewrite也可以在内部重写url。这由[R]
标志的缺席表示。如果用户请求http://foo.example.com
,则会在内部将其重写为http://bar.example.com
也可以访问的文件,假设foo.example.com
和bar.example.com
位于同一文件系统中。这会在地址栏中显示http://foo.example.com
,但实际上会显示http://bar.example.com
也可以访问的文件。请注意,搜索引擎会认为它们是2个不同的页面,内容完全相同,并且可能会对您的网站造成不利影响。
您的案例
在你的情况下,你似乎要求内部重写而不是像标题所暗示的重定向。没有文件系统的结构,我无法真正测试任何东西,但这样的东西就足够了。
RewriteRule ^path/to/subdomain1/(.*)$ path/to/subdomain2/$1 [L]