【问题标题】:mod_rewrite for URL with two URL-parameters带有两个 URL 参数的 URL 的 mod_rewrite
【发布时间】:2014-08-17 03:51:44
【问题描述】:

我希望能够打开以下网址

http://example.com/login/12345

在后台,它应该加载:

http://example.com/index.php?endpoint=login&access_key=12345

显然,我已经尝试了许多 htaccess 生成器来创建适当的 RewriteRule 集。

例如以下(来自:http://www.generateit.net/mod-rewrite/index.php):

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)$ /index.php?endpoint=$1&access_key=$2 [L]

即使我知道在我的服务器上启用了 .htaccess 和 mod_rewrite(我尝试设置一个测试以使用 htaccess 和 mod_rewrite 将所有请求从 example.com 重定向到 example2.com,并且它有效),我无法让它工作。

我现在花了将近 2 个小时在 stackoverflow 和其他网站上寻找解决方案,但我所有的尝试都失败了。

我希望有人能帮我找出在上面的例子中重写我的网址的正确方法。就像上面解释的那样。

提前非常感谢!

【问题讨论】:

  • 究竟是什么“不起作用”?!它做什么或不做什么?
  • login 是变量吗?意思是,它也可以是http://example.com/housenumber/12345 吗?
  • 您的 .htaccess 文件的位置是什么?

标签: php .htaccess mod-rewrite


【解决方案1】:

试试这个:

RewriteEngine On
RewriteRule ^([^\/]*)/([^\/]*)$ /index.php?endpoint=$1&access_key=$2 [L]
#-Added-these---^--------^

经过测试,结果如下:

【讨论】:

  • 非常感谢,就像一个魅力。另外,对于其他想知道 clami219 使用什么测试工具的人,您可以在这里找到它:htaccess.madewithlove.be 非常有用!
【解决方案2】:

将此添加到DOCUMENT_ROOT 中的.htaccess 文件中

假设login 不可变

RewriteEngine On
RewriteRule ^login/(\d+)$ index.php?endpoint=login&access_key=$1 [L,NC,DPI]

**如果login是可变的**

这是为了防止您不仅要重定向login,还要重定向诸如http://example.com/housenumber/12345之类的网址

RewriteEngine On
RewriteRule ^([^/]+)/(\d+)$ index.php?endpoint=$1&access_key=$2 [L,NC,DPI]

在实际的 Apache 2.2 和 2.4 上测试:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 2016-01-22
    • 2012-12-05
    • 2012-09-06
    • 2013-03-22
    • 1970-01-01
    相关资源
    最近更新 更多