【问题标题】:Adding $ on redirect stops working, rewriteRule not working在重定向上添加 $ 停止工作,rewriteRule 不起作用
【发布时间】:2019-02-28 19:30:21
【问题描述】:

PHP 版本 5.4.16

Apache 加载的模块

core mod_so http_core mod_access_compat mod_actions mod_alias mod_allowmethods mod_auth_basic mod_auth_digest mod_authn_anon mod_authn_core mod_authn_dbd mod_authn_dbm mod_authn_file mod_authn_socache mod_authz_core mod_authz_dbd mod_authz_dbm mod_authz_groupfile mod_authz_host mod_authz_owner mod_authz_user mod_autoindex mod_cache mod_cache_disk mod_data mod_dbd mod_deflate mod_dir mod_dumpio mod_echo mod_env mod_expires mod_ext_filter mod_filter mod_headers mod_include mod_info mod_log_config mod_logio mod_mime_magic mod_mime mod_negotiation mod_remoteip mod_reqtimeout mod_rewrite mod_setenvif mod_slotmem_plain mod_slotmem_shm mod_socache_dbm mod_socache_memcache mod_socache_shmcb mod_status mod_substitute mod_suexec mod_unique_id mod_unixd mod_userdir mod_version mod_vhost_alias mod_dav mod_dav_fs mod_dav_lock mod_lua prefork mod_proxy mod_lbmethod_bybusyness mod_lbmethod_byrequests mod_lbmethod_bytraffic mod_lbmethod_heartbeat mod_proxy_ajp mod_proxy_balancer mod_proxy_connect mod_proxy_express mod_proxy_fcgi mod_proxy_fdpass mod_proxy_ftp mod_proxy_http mod_proxy_scgi mod_proxy_wstunnel mod_ssl mod_systemd mod_cgi mod_php5

问题

我正在尝试将一些页面从我的网站重定向到另一个网站的主页,但我似乎无法使其正常工作。 目前我有这个:

redirect 301 /portalwebhttp://www2.tha.com.br

如果 url 正好是 www.oldwebsite.com.br/portalweb,它就可以工作。但是如果在 portalweb 之后添加任何内容,它会重定向到:http://www.mywebsite.com.br/anything

我尝试了以下解决方案:

redirect 301 /portalweb$ http://www.mywebsite.com.br

Redirect "/portalweb$" "http://www.mywebsite.com.br/"

RedirectMatch ^portalweb/$ http://www.mywebsite.com.br

RewriteEngine On
RewriteRule    "^portalweb$"  "http://www.mywebsite.com.br/" [R,L]
RewriteRule    "^portalweb/$"  "http://www.mywebsite.com.br/" [R,L]

当我添加上述任何解决方案时,它根本不起作用。似乎$ 字符使重定向不起作用。

提前致谢。

【问题讨论】:

  • @MichaelWarner - 他的问题与我的不完全相同,我不希望以下网址也被重定向,但我设法通过在 @987654329 上添加 301 来解决我的问题@。我会发布一个答案。
  • 很高兴您找到了解决方案!为了清楚起见,我并不是说这是同一个问题,但这种技术可能会有所帮助。
  • @MichaelWarner - 是的,哈哈,很抱歉,如果有暗示,那不是我的本意。你知道为什么301 解决了吗?

标签: apache .htaccess


【解决方案1】:

RedirectMatch 等价于重定向,但使用正则表达式,例如 here

Redirect 默认状态码为 302,如 here 所述。

如果您将状态代码更改为 301,这应该可以修复它。

【讨论】:

    【解决方案2】:

    使用@MichaelWarner 建议的答案stackoverflow.com/q/6877486/4139335。我注意到我的RedirectMatch 中缺少301

    这行得通: RedirectMatch 301 ^/portalweb/$ https://www.mywebsite.com.br 我不知道为什么 301 会成功,如果有人向我解释,我会很高兴。

    【讨论】:

      猜你喜欢
      • 2014-05-31
      • 1970-01-01
      • 2015-12-28
      • 2014-04-21
      • 2013-10-09
      • 2013-03-14
      • 2014-08-17
      • 2015-04-17
      • 1970-01-01
      相关资源
      最近更新 更多