【问题标题】:.htaccess - Rewrite with 3 variables but after that get the rest of the URL.htaccess - 用 3 个变量重写,但之后获取 URL 的其余部分
【发布时间】:2017-01-24 10:40:39
【问题描述】:

所以我目前正在使用我的 .htaccess 来编写我的 URL,以使 URL 更加友好。 但是我无法获得可能是更多文件夹的第四个变量。我会在下面尽力解释。

所以目前我可以使用以下 URL:

www.mysite.co.uk/first/second/third

现在我使用重写规则:

RewriteRule ^e/([a-zA-Z0-9-/]*)/([a-zA-Z0-9-/]*)/([a-zA-Z0-9\-\/]*)$ index.php?var_1=$1&var_2=$2&var_3=$3   [L]

当我发生以下其中一种情况时,我的问题就出现了:

www.mysite.co.uk/first/second/third/fourth

www.mysite.co.uk/first/second/third/fourth/fifth

www.mysite.co.uk/first/second/third/fourth/fifth/sixth

从上面我想要返回以下变量:

$_GET['var_1'] = 第一

$_GET['var_2'] =

$_GET['var_3'] = 第三/第四

$_GET['var_3'] = 第三/第四/第五

$_GET['var_3'] = 第三/第四/第五/第六

所以基本上我总是设置“var_1”和“var_2”,但第三个变量可以是 URL 的其余部分。

我希望这是有道理的,并且是可能的。

【问题讨论】:

  • 您可以通过 php 执行此操作,解析 url:示例:[php.net/manual/en/function.parse-url.php]
  • 嗨@DenisSolakovic 感谢您的意见。这样做可以工作,但当以原始格式发送变量时效果更好(?var_one = first)。除非我错过了什么。
  • 嗯,你可以用 .htaccess [stackoverflow.com/questions/7827779/… 来做到这一点,但我的另一个建议是用分隔符 / 分解 url 参数并获取你的 url 片段......

标签: php apache .htaccess url mod-rewrite


【解决方案1】:

我不确定你的规则为什么以 ^e/ 开头 如果您的网址格式为:www.mysite.co.uk/e/first/second/third/fourth 然后使用这个正则表达式:

RewriteRule ^e/([a-zA-Z0-9-]+)(/([a-zA-Z0-9-]+))?(/([a-zA-Z0-9-/]*))?$ index.php?var_1=$1&var_2=$3&var_3=$5 [L]

如果您在开始时需要它而不需要 /e/ www.mysite.co.uk/e/first/second/third/fourth
然后从开始删除 /e/

RewriteRule ^([a-zA-Z0-9-]+)(/([a-zA-Z0-9-]+))?(/([a-zA-Z0-9-/]*))?$ index.php?var_1=$1&var_2=$3&var_3=$5 [L]

上面的示例即使使用 /first/first/second 之类的 url-s 也可以使用,但如果您不需要它并且只想拥有此规则如果有 3 个或更多参数,则可以简化规则:

RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-/]+)$ index.php?var_1=$1&var_2=$2&var_3=$3 [L]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多