【问题标题】:URL Masking with htaccess 2使用 htaccess 2 进行 URL 掩码
【发布时间】:2013-10-09 18:13:17
【问题描述】:

我有以下网址:

http://site/testing/mypage.php?PropertyBuyRent=sell&Developer=&Resort=&City=&State=&Country=US&Price=

我有 htaccess 来检查变量 country 中是否有内容,它会像这样更改 url:

http://site/testing/mypage.php/TimeshareForSale/US

我的 htaccess 文件如下:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(testing/mypage\.php)\?PropertyBuyRent=sell&Developer=&Resort=&City=&State=&Country=([^&]+)&Price= [NC]

RewriteRule ^ /%1/TimeshareForSale/%2? [R=301,L,NE]

RewriteRule ^(testing/mypage.php)/TimeshareForSale/([^/]+)/?$ /$1?PropertyBuyRent=sell&Developer=&Resort=&City=&State=&Country=$2&Price= [L,NC,QSA]

它工作得非常好..并将我重定向到我所说的上述网址,但在我的 php 文件中,我的变量不再有效,即 $_GET['Country'] 如果我删除 htaccess 它打印它很好。

【问题讨论】:

  • 这是您在 4 小时内提出的关于 URL 重写的第三个问题——您先去阅读有关此事的教程如何?
  • if i remove the htaccess it prints it fine 是什么意思?
  • 如果它不重写url,它会打印变量fine
  • 我刚刚运行了你的代码并得到了这个查询字符串PropertyBuyRent=sell&Developer=&Resort=&City=&State=&Country=US&Price= 你可以看到$_GET['Country'] 在那里所以它可能是由于你的.htaccess 中的一些其他规则

标签: php apache .htaccess url mod-rewrite


【解决方案1】:

按照您的方式工作正常,您只需要更改所有类型的链接,因为您不能在所有条件下使用分时度假/我们

【讨论】:

    【解决方案2】:

    “我有以下网址:”

    “它会像这样改变网址:”

    哇,哇,哇!您可能陷入了向后编写 .htaccess 的常见陷阱。

    http://site/testing/mypage.php/TimeshareForSale/US
    

    是 URL 的“搜索引擎友好”外部 版本。如果不先将其(在 .htaccess 中)转换为

    ,它将无法与您的 PHP 代码一起使用
    http://site/testing/mypage.php?PropertyBuyRent=sell&Developer=&Resort=&City=&State=&Country=US&Price=
    

    虽然这在有或没有 .htaccess URL 重写的情况下都可以工作,但我认为您正试图保护您的用户免受它的影响。 .htaccess 用于将第一种形式转换为第二种形式(入站),而不是反过来(出站)。

    现在,你想往哪个方向发展?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      • 2016-12-25
      • 2014-05-27
      • 2021-05-21
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      相关资源
      最近更新 更多