在 apache 中创建一个不重定向的重写查询字符串
Posted
技术标签:
【中文标题】在 apache 中创建一个不重定向的重写查询字符串【英文标题】:Create a rewrite query string in apache which is not redirecting 【发布时间】:2015-07-18 12:58:57 【问题描述】:我想将所有流量从subdomain.domain.com
重定向到subdomain.domain.com/?appselect=app1
。
我在这里遵循了一些示例:Rewrite query string in .htaccess 但由于某种原因,它们不为我工作。这是我到目前为止所拥有的:
RewriteEngine On
RewriteRule ^/$ /?appselect=app1 [PT,L]
但它只是转到同一页面:subdomain.domain.com
对此的任何帮助将不胜感激,谢谢。
【问题讨论】:
【参考方案1】:基本上做这样的事情会奏效。它适用于我的服务器。
RewriteEngine On
RewriteCond %HTTP_HOST ^subdomain\. [NC]
RewriteRule ^/?$ /?appselect=app1 [QSA,L,R=302]
【讨论】:
【参考方案2】:如果你想重定向然后添加R
标志:
RewriteEngine On
RewriteCond %HTTP_HOST ^subdomain\. [NC]
RewriteCond %QUERY_STRING !(^|&)appselect=app1 [NC]
RewriteRule ^/?$ /?appselect=app1 [QSA,L,R=302]
【讨论】:
谢谢@anubhava,但我得到了这个错误:这个网页有一个重定向循环 再问一个问题,我打算将来强制使用 SSL。你认为这会让我放弃这条规则并创建一个全新的规则,还是我可以回收这条规则以使其强制使用 https?而且,是否可以从地址栏中隐藏真实的 URL,只向用户显示subdomain.domain.com
,这样用户就看不到附加到 URL 的查询字符串?非常感谢您的帮助!
如果你想隐藏真实的 URL 然后从上面的 URL 中删除 R=302
。并且每当您决定使用 SSL
时,请在此规则之前使用该重定向规则。
感谢 anubhava,我删除了 R=302,它现在显示的是 apache 测试页面,所以要去别的地方。
没有问题,伙计。只是为了让您知道 Julio 的回答会导致重定向循环。【参考方案3】:
试试
RewriteRule ^$ /?appselect=app1 [PT,L]
【讨论】:
感谢您的回复,但它转到同一页面:subdomain.domain.com以上是关于在 apache 中创建一个不重定向的重写查询字符串的主要内容,如果未能解决你的问题,请参考以下文章
apache_conf 如何在.NET MVC4中创建自定义BundleTransform,特别是为了不重命名变量。因为我找不到这个