我的问题是,位于像: test.example.com/这样的位置上的.htaccess文件不会重定向。我怀疑这是因为同一个文件中的缓存规则。我认为它们可能会干扰,但是,我对.htaccess文件没有经验,所以我可能完全错了。有人能帮我重定向吗?
test.example.com/s/home
to:
test.example.com/?s=home
用户应该输入: test.example.com/s/home,然后test.example.com/index.php应该能够不需要urlbar中的url更改为test.example.com/?s=home的$_GET"s“。
我尝试了很多在堆栈溢出上显示的例子,但它们对我没有用。
<IfModule mod_headers.c>
Header set Cache-Control "max-age=0, private, no-cache, no-store, must-revalidate"
</IfModule>
RewriteEngine on
RewriteRule ^/s/$ /?s=$1
,这不管用!^
我该如何解决这个问题?
发布于 2019-06-03 10:51:05
对于您所要求的特定任务,考虑到您对index.php
路由脚本的额外提及,我建议从以下起点开始:
RewriteEngine on
RewriteRule ^/?s/(\w+)/?$ /index.php?s=$1 [END,QSA]
不过,你可能不得不根据你的具体情况来调整它。
如果使用上面的规则接收到内部服务器错误(http状态500),那么很可能您操作的是apache http服务器的一个非常旧的版本。在这种情况下,您将在http服务器错误日志文件中看到对不支持的[END]
标志的明确提示。您可以尝试升级或使用旧的[L]
标志,在这种情况下,它可能会同样工作,尽管这在一定程度上取决于您的设置。
此规则同样适用于http服务器主机配置或动态配置文件(".htaccess“文件)。显然,重写模块需要加载在http服务器中,并在http主机中启用。如果使用动态配置文件,则需要注意主机配置中完全启用了它的解释,并且它位于主机的DOCUMENT_ROOT
文件夹中。
请注意:与使用动态配置文件(".htaccess")相比,您应该始终倾向于将此类规则放置在http服务器主机配置中。这些动态配置文件增加了复杂性,常常是意外行为的一个原因,很难调试,而且它们确实减慢了http服务器的运行速度。它们仅作为最后一种选择,用于您无法访问真正的http服务器主机配置(阅读:真正便宜的服务提供者)或坚持编写自己的规则的应用程序(这显然是一场安全噩梦)。
https://stackoverflow.com/questions/56432527
复制相似问题