.htaccess htaccess重写文件夹以在MODx中查询字符串

.htaccess htaccess重写文件夹以在MODx中查询字符串,.htaccess,rewrite,query-string,modx,.htaccess,Rewrite,Query String,Modx,我试图在内部将URL文件夹结构改写为查询字符串,但保留原始URL。。。 即 变成: …内部。在浏览器中,我希望看到原始的基于文件夹的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 ^e

我试图在内部将URL文件夹结构改写为查询字符串,但保留原始URL。。。 即
变成:

…内部。在浏览器中,我希望看到原始的基于文件夹的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显然是在破坏内部的东西。。不是最好的消息,但至少有一点结束

  • RewriteBase/
    如果
    .htaccess
    文件位于文档根目录中,则不会执行任何操作。移除它
  • 我认为你的替换不需要正斜杠前缀。另外,试试这一条规则

    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]
    
    Array
    (
        [q] => employers/events/
        [e_year] => 2013
        [e_month] => 02
    )
    
    更新 使用一个独立的示例,您的重写规则将导致以下查询参数被传递到MODx
    index.php
    文件

    RewriteEngine on
    RewriteRule ^a/b/(\d{4})/(\d{2})/? /a/b/?y=$1&m=$2 [L,QSA]
    
    Array
    (
        [q] => employers/events/
        [e_year] => 2013
        [e_month] => 02
    )
    

    MODx用这个做了什么,我不能说

    谢谢Phil。。。同样的情况仍然发生在任务单上-查询版本仍然可以从浏览器中看到。没有重定向可以使其从前端可见。不确定modX是否在内部搞乱了链接。。我找不到任何能说明这一点的东西。@SteveH这就是
    .htaccess
    中的全部内容吗?MODx有自己的一套规则,但前提是您启用友好URL并重命名
    ht.access
    文件我使用的是放在我之后的友好URL标准规则。。。(用代码更新问题)我担心modX中的其他东西正在破坏我的路线。。。真的是我不想发生的事。这是一个基于另一方建立的主站点的微型站点。大海捞针:(@SteveH在
    employers/events/
    中是否有一个实际的文件(
    index.php
    或类似文件)?如果是这样,你应该把它放在你的
    重写规则中(见我更新的答案)。如果没有任何内容,MODx将重写URL,我不确定会发生什么。是的,这是一个在MODx中路由的虚拟目录。。您更新的代码在employers/events/index.php上给出了404,但仍然传递了查询参数。