【问题标题】:htaccess rewrite folders to query string in MODxhtaccess 重写文件夹以在 MODx 中查询字符串
【发布时间】:2013-02-11 23:30:32
【问题描述】:

我正在尝试在内部将 URL 文件夹结构修改为查询字符串,但保留原始 URL... IE。 http://www.mysite.com/employers/events/2013/02
变为:
http://www.mysite.com/employers/events/?e_year=2013&e_month=02
...内部。从浏览器中,我想查看原始的基于文件夹的 URL。我的努力使 URL 被正确重写,但浏览器显示查询字符串 URL。我的代码如下:

RewriteEngine On

RewriteRule ^employers/events/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ /employers/events/?e_year=$1&e_month=$2 [L]
RewriteRule ^employers/events/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/$ /employers/events/?e_year=$1&e_month=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

第二条规则是用斜杠捕获版本。

非常感谢,这让我很痛苦。

更新:

这是正在传递的内容:

Array ( [q] => employers/events/ [e_year] => 2013 [e_month] => 02 )

所以 MODx 显然是在内部破坏事情.. 不是最好的消息,但至少有点关闭!

【问题讨论】:

    标签: .htaccess rewrite query-string modx


    【解决方案1】:
    1. 如果.htaccess 文件位于文档根目录中,RewriteBase / 将不执行任何操作。删除它
    2. 我认为您的替换不需要正斜杠前缀。另外,试试这条规则

      RewriteRule ^employers/events/(\d{4})/(\d{2})/? employers/events/?e_year=$1&e_month=$2 [L,QSA]
      

    我已经在本地对此进行了测试,使用以下 .htaccess 文件可以正常工作

    RewriteEngine on
    RewriteRule ^a/b/(\d{4})/(\d{2})/? /a/b/?y=$1&m=$2 [L,QSA]
    

    更新

    使用独立示例,您的重写规则应导致将以下查询参数传递给 MODx index.php 文件

    Array
    (
        [q] => employers/events/
        [e_year] => 2013
        [e_month] => 02
    )
    

    MODx 对此做了什么,我不能说

    【讨论】:

    • 谢谢菲尔......同样的事情仍然发生在 mo - 查询版本仍然可以从浏览器中看到。没有应该使它从前端可见的重定向。不确定 modX 是否也在内部弄乱了链接。我找不到任何暗示它的东西。
    • @SteveH 这就是.htaccess 中的全部内容吗? MODx 有自己的一套规则,但前提是您启用 友好 URL 并重命名 ht.access 文件
    • 我正在使用放在我之后的友好 URL 标准规则...(用代码更新问题)我担心 modX 中的其他东西会影响我的路线...真的是我不想要的即将发生。它是基于另一方建立的主站点的微型站点。大海捞针:(
    • @SteveH employers/events/ 中是否有实际文件(index.php 或类似文件)?如果是这样,你应该把它放在你的RewriteRule 中(见我更新的答案)。如果那里什么都没有,MODx 将重写 URL,我不确定会发生什么
    • 是的,它是一个在 modX 中路由的虚拟目录。您更新的代码在employees/events/index.php 上给出了 404,但查询参数仍然通过。
    猜你喜欢
    • 2011-04-06
    • 2015-11-11
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多