0

我正在尝试在内部将 URL 文件夹结构修改为查询字符串,但保留原始 URL ...即。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 显然在内部破坏事情.. 不是最好的消息,但至少有点关闭!

4

1 回答 1

1
  1. RewriteBase /如果.htaccess文件位于文档根目录中,则不执行任何操作。去掉它
  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]

更新

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

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

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

于 2013-02-11T23:42:37.297 回答