我想重定向mysite的一个主页面及其子页面。我现在的网址;
www.mysite.com/article/service-1
www.mysite.com/article/service-2 我想重定向到;
www.mysite.com/publication/service-1
www.mysite.com/publication/service-2我怎样才能重定向呢?
发布于 2019-06-14 10:24:42
你的问题对于你真正想要达到的目标是一个非常模糊的问题。因此,我将给你们两个答案作为起点:
我想你实际上想要的是内部重写,而不是重写。如果是这样,就可以做到:
RewriteEngine on
RewriteRule ^/?article/(.*)$ /publication/$1 [END,QSA]如果使用上面的规则接收到内部服务器错误(http状态500),那么很可能您操作的是apache http服务器的一个非常旧的版本。在这种情况下,您将在http服务器错误日志文件中看到对不支持的[END]标志的明确提示。您可以尝试升级或使用旧的[L]标志,在这种情况下,它可能会同样工作,尽管这在一定程度上取决于您的设置。
如果您在写问题时真的想要重定向,那么这个变体就可以了,它实际上会重定向客户端,所以在浏览器中更改可见的URL:
RewriteEngine on
RewriteRule ^/?article/(.*)$ /publication/$1 [R=301,QSA]这是一个好主意,从302临时重定向,并只改变到301永久重定向后,一旦你确定一切是正确的设置。在尝试时防止缓存问题..。
这两个规则在http服务器主机配置中或在动态配置文件(".htaccess“文件)中都将同样工作。显然,重写模块需要加载在http服务器中,并在http主机中启用。如果使用动态配置文件,则需要注意主机配置中完全启用了它的解释,并且它位于主机的DOCUMENT_ROOT文件夹中。
请注意:与使用动态配置文件(".htaccess")相比,您应该始终倾向于将此类规则放置在http服务器主机配置中。这些动态配置文件增加了复杂性,常常是意外行为的一个原因,很难调试,而且它们确实减慢了http服务器的运行速度。它们仅作为最后一种选择,用于您无法访问真正的http服务器主机配置(阅读:真正便宜的服务提供者)或坚持编写自己的规则的应用程序(这显然是一场安全噩梦)。
https://stackoverflow.com/questions/56595598
复制相似问题