.htaccess来自旧的其余端点的重写请求,新的端点

时间:2019-02-21 16:17:30

标签: .htaccess mod-rewrite url-rewriting

我试图在我的.htaccess文件中包含一个条件,以将请求重写到REST端点,该请求在对新端点的位置执行一些更新后将不再存在。现有请求看起来像这样:

https://www.example.com/applications/interface/?info&key=xxx&indentifier=xxx

我希望新请求在社区文件夹中的不同位置具有相似的结构:

https://www.example.com/community/applications/interface/?info&key=xxx&indentifier=xxx

任何帮助将不胜感激。我现有的.htaccess如下所示:

<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(js|css|jpeg|jpg|gif|png|ico|map)(\?|$) /404error.php [L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

1 个答案:

答案 0 :(得分:0)

您是否有理由不能将旧请求重定向到新请求? URI是否需要在内部重写?

如果重定向足够好,则可以执行以下操作(请注意,我正在使用mod_rewrite和 not mod_alias的Redirect指令,这是因为它们最终都变得应用于同一请求,并且可能与您现有的路由规则冲突)

RewriteRule ^applications/interface/$ /community/applications/interface/ [L,R]

并且您希望在RewriteBase下使用该名称。这将接收看起来像/applications/interface/的请求,并在不影响所有查询字符串参数的情况下将它们重定向到/community/applications/interface/。正则表达式将只与该URI具体匹配,并与尾随/匹配。

如果需要进行某种内部重写,建议您在框架内执行此操作,而不要尝试在htaccess文件中使用mod_rewrite。您已经设置好了,因此每个请求都被路由到index.php,并且由该代码确定需要去哪里。