.htaccess 用变量重写子域
.htaccess rewrite a subdomain with a variable
这可能指向特定变量的子域吗?
http://whatever.example.com point to http://example.com/file.php?var=1
http://whatever1.example.com point to http://example.com/file.php?var=2
尝试了下面推荐的答案 - 代码有效但没有 css 风格:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(?:www\.)?whatever\.example\.com$
RewriteRule ^ /file.php?var=1 [L,QSA]
RewriteCond %{HTTP_HOST} ^(?:www\.)?whatever1\.example\.com$
RewriteRule ^ /file.php?var=2 [L,QSA]
或
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteCond %{HTTP_HOST} ^(?:www\.)?([^.]+)\.example\.com$
RewriteRule ^ /file.php?var=%1 [L,QSA]
通过在 header 中添加 <base href=""/>
并为我的 css 创建一个名为 css 的文件夹,因为根文件夹无法正常工作。不知道为什么?
<base href="../" /> "not working"
<base href="/" /> "not working"
<base href="./" /> "not working"
<base href="/cssfolder/" /> "this work"
当然可以。但你需要区分几件事:
URL(“子域”)中的实际主机名是 而不是 RewriteRule
s 模式内部匹配路径的一部分。您需要使用 RewriteCond
来访问该信息:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(?:www\.)?whatever\.example\.com$
RewriteRule ^ /file.php?var=1 [L,QSA]
RewriteCond %{HTTP_HOST} ^(?:www\.)?whatever1\.example\.com$
RewriteRule ^ /file.php?var=2 [L,QSA]
一个典型的变体是交出一个真实的名字而不是一个数值。这里 GET 变量将变为 v=whatever
或 v=whatever1
:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteCond %{HTTP_HOST} ^(?:www\.)?([^.]+)\.example\.com$
RewriteRule ^ /file.php?var=%1 [L,QSA]
当然,这假定所有 hosts/subdomains 都由同一个 http 服务器提供服务,因为它是 内部 重写。
一般来说,我会建议您查看您要使用的工具的文档。该文档与典型的开源软件一样,质量上乘,并附有很好的示例:https://httpd.apache.org/docs/current/mod/mod_rewrite.html
这可能指向特定变量的子域吗?
http://whatever.example.com point to http://example.com/file.php?var=1
http://whatever1.example.com point to http://example.com/file.php?var=2
尝试了下面推荐的答案 - 代码有效但没有 css 风格:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(?:www\.)?whatever\.example\.com$
RewriteRule ^ /file.php?var=1 [L,QSA]
RewriteCond %{HTTP_HOST} ^(?:www\.)?whatever1\.example\.com$
RewriteRule ^ /file.php?var=2 [L,QSA]
或
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteCond %{HTTP_HOST} ^(?:www\.)?([^.]+)\.example\.com$
RewriteRule ^ /file.php?var=%1 [L,QSA]
通过在 header 中添加 <base href=""/>
并为我的 css 创建一个名为 css 的文件夹,因为根文件夹无法正常工作。不知道为什么?
<base href="../" /> "not working"
<base href="/" /> "not working"
<base href="./" /> "not working"
<base href="/cssfolder/" /> "this work"
当然可以。但你需要区分几件事:
URL(“子域”)中的实际主机名是 而不是 RewriteRule
s 模式内部匹配路径的一部分。您需要使用 RewriteCond
来访问该信息:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(?:www\.)?whatever\.example\.com$
RewriteRule ^ /file.php?var=1 [L,QSA]
RewriteCond %{HTTP_HOST} ^(?:www\.)?whatever1\.example\.com$
RewriteRule ^ /file.php?var=2 [L,QSA]
一个典型的变体是交出一个真实的名字而不是一个数值。这里 GET 变量将变为 v=whatever
或 v=whatever1
:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteCond %{HTTP_HOST} ^(?:www\.)?([^.]+)\.example\.com$
RewriteRule ^ /file.php?var=%1 [L,QSA]
当然,这假定所有 hosts/subdomains 都由同一个 http 服务器提供服务,因为它是 内部 重写。
一般来说,我会建议您查看您要使用的工具的文档。该文档与典型的开源软件一样,质量上乘,并附有很好的示例:https://httpd.apache.org/docs/current/mod/mod_rewrite.html