.htaccess htaccess重写文件夹以在MODx中查询字符串
我试图在内部将URL文件夹结构改写为查询字符串,但保留原始URL。。。 即.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。我的代码如下:
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
)
更新
使用一个独立的示例,您的重写规则将导致以下查询参数被传递到MODxindex.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,但仍然传递了查询参数。