我使用以下代码从anything.sitename.com/search重写TRANSPARENTLY到sitename.com/folder/index.php?id=search,这有效但重定向而不是透明(QSA)重写:
RewriteCond %{HTTP_HOST} ^([^.]+)\.sitename\.com$
RewriteCond %{REQUEST_URI} ^/(.*)$
RewriteRule ^(.+)$ http://sitename.com/folder/index.php?id=%1 [L,QSA]
也只存在%1并且引用request_uri(而不是子域),并且未设置%2变量。 任何解决方案?
答案 0 :(得分:1)
从目标URI中删除http://
,否则将重定向而不是重写。
RewriteCond %{HTTP_HOST} ^([^.]+)\.sitename\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?id=%1 [L,QSA]
答案 1 :(得分:0)
我想我得到了你的问题。 Apache正在重定向外部而不是内部,对吧?那是因为你通过了一个域名。您必须使用文件路径来告诉apache使用内部重定向。