【问题标题】:Htaccess url rewrite with 2 vars使用 2 个变量重写 Htaccess url
【发布时间】:2015-02-28 18:28:28
【问题描述】:

我的 htaccess 出现问题。 我有这个网址:www.mypage.com/search.php?region=EUW&summonerName=Summonername。 这在我的 .htaccess 文件中:

RewriteRule ^(.*)/(.*)/ https://www.mypage.com/search.php?region=$1&summonerName=$2 [L]

当我尝试转到 www.mypage.com/EUW/Summonername 时,它返回 404。

当然,在创建这个线程之前,我已经搜索了很多关于 htaccess url rewrite 的信息,但是没有任何效果。代码有什么问题?干杯。

编辑:我找到了使用方法:RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.*)/(.*)/?$ search?region=$1&summonerName=$2 现在我可以毫无问题地执行https://www.mypage.com/text/text 之类的网址,但我仍然遇到问题。在我的 index.php 表单中,它仍然重定向到https://www.mypage.com/search.php?region=text&summonerName=text,我什至不知道为什么。有什么想法?女士们先生们,干杯。

【问题讨论】:

  • 在规则中,您正在检查是否以 / 结尾,但您的 URL 没有。因此它不起作用。
  • 您的示例确实匹配规则的正则表达式,因为尾随 /。什么不尝试RewriteRule ^(.*?)/(.*?)/? ... 尾随 Q 标记使尾随斜杠可选。也让你的通配符不贪婪:-)
  • RewriteRule ^(.*?)/(.*?)/? 有效,但它会将我重定向到 www.mypage.com/search.php?region=euw&summonerName=summonername。有什么想法吗?

标签: php .htaccess mod-rewrite url-rewriting


【解决方案1】:

试试这个:

RewriteRule ^(.*)\/(.*)$ /search.php?region=$1&summonerName=$2 [L]

【讨论】:

  • 工作过,但仍然重定向,我不知道为什么,但如果我使用它,我的 php 内容不会加载。
【解决方案2】:

我认为你的问题是协议。看起来您正在尝试在内部重写https,我不相信它会让您出于安全目的这样做。这就是为什么它可能仍在重定向。

您应该使用相对路径。试试这个方法,看看它是否适合你。

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ /search.php?region=$1&summonerName=$2 [L]

【讨论】:

  • 是的,我忘了说我正在使用 https。所以它有效,但仍然重定向。我迷路了。
  • 确保清除浏览器缓存或尝试在新浏览器中检查新规则。
猜你喜欢
  • 2012-06-02
  • 2017-10-01
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 1970-01-01
相关资源
最近更新 更多