我在ht access中有以下代码
RewriteEngine On
RewriteCond %{HTTP_HOST} ^outsource.example.com/$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) http://example.com/outsource/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
问题在于链接http://outsource.example.com/packages.php
未重定向到http://www.example.com/packages.php
我希望在其他链接上使用相同的重定向
答案 0 :(得分:1)
考虑到:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^outsource.example.com
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) http://example.com/outsource/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
将导致以下结果:
> GET http://outsource.example.com/packages.php
< 301 http://example.com/outsource/packages.php
> GET http://example.com/outsource/packages.php
< 301 http://www.example.com/outsource/packages.php
> GET http://www.example.com/outsource/packages.php
< 404 - since your file seem to be at /packages.php
您应该减少重定向次数并更改路径:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^outsource.example.com
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
这将导致:
> GET http://outsource.example.com/packages.php
< 301 http://www.example.com/packages.php
> GET http://www.example.com/packages.php
< 200 - and the content of your packages.php